Fossil SCM

fixed a double-free() which could happen in one error case.

stephan 2011-09-19 18:49 UTC json
Commit 65e946c7141c21e218a3da2c407233f297e05f06
1 file changed +1 -3
+1 -3
--- src/json.c
+++ src/json.c
@@ -1286,14 +1286,12 @@
12861286
listV = cson_value_new_array();
12871287
list = cson_value_get_array(listV);
12881288
while( SQLITE_ROW == db_step(&q) ){
12891289
cson_value * v = cson_sqlite3_column_to_value(q.pStmt,0);
12901290
if(!v){
1291
- cson_value_free(listV);
12921291
goto error;
1293
- }
1294
- if( 0 != cson_array_append( list, v ) ){
1292
+ }else if( 0 != cson_array_append( list, v ) ){
12951293
cson_value_free(v);
12961294
goto error;
12971295
}
12981296
}
12991297
db_finalize(&q);
13001298
--- src/json.c
+++ src/json.c
@@ -1286,14 +1286,12 @@
1286 listV = cson_value_new_array();
1287 list = cson_value_get_array(listV);
1288 while( SQLITE_ROW == db_step(&q) ){
1289 cson_value * v = cson_sqlite3_column_to_value(q.pStmt,0);
1290 if(!v){
1291 cson_value_free(listV);
1292 goto error;
1293 }
1294 if( 0 != cson_array_append( list, v ) ){
1295 cson_value_free(v);
1296 goto error;
1297 }
1298 }
1299 db_finalize(&q);
1300
--- src/json.c
+++ src/json.c
@@ -1286,14 +1286,12 @@
1286 listV = cson_value_new_array();
1287 list = cson_value_get_array(listV);
1288 while( SQLITE_ROW == db_step(&q) ){
1289 cson_value * v = cson_sqlite3_column_to_value(q.pStmt,0);
1290 if(!v){
 
1291 goto error;
1292 }else if( 0 != cson_array_append( list, v ) ){
 
1293 cson_value_free(v);
1294 goto error;
1295 }
1296 }
1297 db_finalize(&q);
1298

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button