Hallo,
ich habe ein seltsames Problem das die Funktion sqlite3_str_reset()
einen segmentfault auslöst.
Wirklich verstehe ich das nicht, denn die Funktion sqlite3_str_reset()
setzt den bytecounter auf null und terminiert den string. Der
Angeforderte Speicher bleibt erhalten. Passt dieser nicht rein wird
durch sqlite3_str_append() neuer angefordert.
Ich habe solch eine ähnliche Funktion Programmiert zum erzeugen von json
und diese funktioniert ohne Probleme. Auch mit dem SQL Code ;)
Was ich mir vorstellen könnte das der Pointer für den String intern
verwendet wird bzw. etwas darauf zugreift.
sqlite Version 3.22.0-1ubuntu0.1
Jemand das Problem bekannt ?
Oder ich mach etwas falsch ?
Ich werde mal mit valgrid schauen, ewt. ist man dann schlauer...
Der Code sieht beispielhaft so aus...
1 | sqlite3_str *sql= sqlite3_str_new(db);
|
2 |
|
3 |
|
4 | if(sql){
|
5 |
|
6 | while(BEDINGUNG){
|
7 |
|
8 | sqlite3_str_appendf(sql,"SQL COMMAND");
|
9 |
|
10 | /* prepare or exec SQL Command */
|
11 | .....
|
12 |
|
13 |
|
14 | sqlite3_str_reset(sql) /* segemntfault */
|
15 |
|
16 | }
|
17 |
|
18 | sqlite3_free(sqlite3_str_finish(sql));
|
19 |
|
20 | }
|