checker: do not allow &u8(0), force nil like we do with &Type(0)

This commit is contained in:
Alexander Medvednikov 2025-05-03 22:37:51 +03:00
parent 3ab660b4c6
commit 7d57a19d7e
52 changed files with 184 additions and 118 deletions

View file

@ -224,7 +224,7 @@ pub fn (db &DB) q_string(query string) !string {
return db.error_message(code, query)
}
val := unsafe { &u8(C.sqlite3_column_text(stmt, 0)) }
return if val != &u8(0) { unsafe { tos_clone(val) } } else { '' }
return if val != &u8(unsafe { nil }) { unsafe { tos_clone(val) } } else { '' }
}
// exec_map executes the query on the given `db`, and returns an array of maps of strings, or an error on failure
@ -254,7 +254,7 @@ pub fn (db &DB) exec_map(query string) ![]map[string]string {
val := unsafe { &u8(C.sqlite3_column_text(stmt, i)) }
col_char := unsafe { &u8(C.sqlite3_column_name(stmt, i)) }
col := unsafe { col_char.vstring() }
if val == &u8(0) {
if val == &u8(unsafe { nil }) {
row[col] = ''
} else {
row[col] = unsafe { tos_clone(val) }
@ -294,7 +294,7 @@ pub fn (db &DB) exec(query string) ![]Row {
mut row := Row{}
for i in 0 .. nr_cols {
val := unsafe { &u8(C.sqlite3_column_text(stmt, i)) }
if val == &u8(0) {
if val == &u8(unsafe { nil }) {
row.vals << ''
} else {
row.vals << unsafe { val.vstring() }
@ -388,7 +388,7 @@ pub fn (db &DB) exec_param_many(query string, params []string) ![]Row {
mut row := Row{}
for i in 0 .. nr_cols {
val := unsafe { &u8(C.sqlite3_column_text(stmt, i)) }
if val == &u8(0) {
if val == &u8(unsafe { nil }) {
row.vals << ''
} else {
row.vals << unsafe { val.vstring() }