qt bug 提交

场景:发现QT 库的重大bug 了,如何向QT委员会提交意见

发现QT 库的重大bug 了,怎么向QT委员会提交意见?
发现了QT 的重大bug ,位于

文件 qsql_odbc.cpp ;


bool QODBCResult::exec();  

这个函数里面
见 这部分:


  case QVariant::String:
  if (d->unicode) {
  QString str = val.toString();
  if (*ind != SQL_NULL_DATA)
  *ind = str.length() * sizeof(SQLTCHAR);
SQLSMALLINT fSQLSMALLINT = qParamType[(QFlag)(bindValueType(i)) & QSql::InOut];

  if (bindValueType(i) & QSql::Out) {
  QVarLengthArray<SQLTCHAR> ba(toSQLTCHAR(str));
  ba.reserve(str.capacity());

r = SQLBindParameter(d->hStmt,
i + 1,
qParamType[(QFlag)(bindValueType(i)) & QSql::InOut],
SQL_C_TCHAR,
strSize > 254 ? SQL_WLONGVARCHAR : SQL_WVARCHAR,
0,// god knows... don't change this!
0,
(void *)ba.constData(),
ba.size()*sizeof(SQLTCHAR),
ind);

  tmpStorage.append(QByteArray((const char *)ba.constData(), ba.size()*sizeof(SQLTCHAR)));
  break;
  }



这段代码是有问题的。

 QVarLengthArray<SQLTCHAR> ba(toSQLTCHAR(str)); 
这里申请的 ba

SQLBindParameter(。。。。。。(void *)ba.constData(),)

放在这里调用。

假如 这个地方是一个传出参数。
那么以后将读不到 这个变量,因为 这个一个局部变量。

  tmpStorage.append(QByteArray((const char *)ba.constData(), ba.size()*sizeof(SQLTCHAR)));
  break;

这里其实没有什么用,tmpStorage 保存的只是 ba的复制品,不是ba本身。 当 SQLBindParameter 是要从数据库读取数据的时候,其内容是复制到了 ba 本身,而不会影响到 tmpStorage。





谁能帮我把这个bug 提交到 QT bug 委员会啊。。。。。。


------解决方案--------------------
https://bugreports.qt.nokia.com//secure/Dashboard.jspa
------解决方案--------------------
容器都是使用引用计数的。
我没看出来是BUG。
------解决方案--------------------
探讨

引用:

容器都是使用引用计数的。
我没看出来是BUG。


但是,这个地方,我调试的时候,确实获取不到数据。

我换用 一个 char [] 数组,就可以把数据读取出来