mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-01 19:02:18 +00:00
Fix segfault in db_mysql fastRows (#5605)
This commit is contained in:
@@ -173,17 +173,33 @@ iterator fastRows*(db: DbConn, query: SqlQuery,
|
||||
rawExec(db, query, args)
|
||||
var sqlres = mysql.useResult(db)
|
||||
if sqlres != nil:
|
||||
var L = int(mysql.numFields(sqlres))
|
||||
var result = newRow(L)
|
||||
var row: cstringArray
|
||||
var
|
||||
L = int(mysql.numFields(sqlres))
|
||||
row: cstringArray
|
||||
result: Row
|
||||
backup: Row
|
||||
newSeq(result, L)
|
||||
while true:
|
||||
row = mysql.fetchRow(sqlres)
|
||||
if row == nil: break
|
||||
for i in 0..L-1:
|
||||
setLen(result[i], 0)
|
||||
if row[i] == nil:
|
||||
if backup == nil:
|
||||
newSeq(backup, L)
|
||||
if backup[i] == nil and result[i] != nil:
|
||||
shallowCopy(backup[i], result[i])
|
||||
result[i] = nil
|
||||
else:
|
||||
if result[i] == nil:
|
||||
if backup != nil:
|
||||
if backup[i] == nil:
|
||||
backup[i] = ""
|
||||
shallowCopy(result[i], backup[i])
|
||||
setLen(result[i], 0)
|
||||
else:
|
||||
result[i] = ""
|
||||
else:
|
||||
setLen(result[i], 0)
|
||||
add(result[i], row[i])
|
||||
yield result
|
||||
properFreeResult(sqlres, row)
|
||||
|
||||
Reference in New Issue
Block a user