diff options
Diffstat (limited to 'src/sq/sq.c')
-rw-r--r-- | src/sq/sq.c | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/src/sq/sq.c b/src/sq/sq.c index dc4416761..089ebf0ff 100644 --- a/src/sq/sq.c +++ b/src/sq/sq.c | |||
@@ -49,7 +49,14 @@ GNUNET_SQ_bind (sqlite3_stmt *stmt, | |||
49 | "sq", | 49 | "sq", |
50 | _("Failure to bind %u-th SQL parameter\n"), | 50 | _("Failure to bind %u-th SQL parameter\n"), |
51 | i); | 51 | i); |
52 | return GNUNET_SYSERR; | 52 | if (SQLITE_OK != |
53 | sqlite3_reset (stmt)) | ||
54 | { | ||
55 | GNUNET_log_from (GNUNET_ERROR_TYPE_WARNING, | ||
56 | "sq", | ||
57 | _("Failure in sqlite3_reset (!)\n")); | ||
58 | return GNUNET_SYSERR; | ||
59 | } | ||
53 | } | 60 | } |
54 | GNUNET_assert (0 != params[i].num_params); | 61 | GNUNET_assert (0 != params[i].num_params); |
55 | j += params[i].num_params; | 62 | j += params[i].num_params; |
@@ -83,7 +90,12 @@ GNUNET_SQ_extract_result (sqlite3_stmt *result, | |||
83 | j, | 90 | j, |
84 | rs[i].result_size, | 91 | rs[i].result_size, |
85 | rs[i].dst)) | 92 | rs[i].dst)) |
93 | { | ||
94 | for (unsigned int k=0;k<i;k++) | ||
95 | if (NULL != rs[k].cleaner) | ||
96 | rs[k].cleaner (rs[k].cls); | ||
86 | return GNUNET_SYSERR; | 97 | return GNUNET_SYSERR; |
98 | } | ||
87 | GNUNET_assert (0 != rs[i].num_params); | 99 | GNUNET_assert (0 != rs[i].num_params); |
88 | j += rs[i].num_params; | 100 | j += rs[i].num_params; |
89 | } | 101 | } |
@@ -105,4 +117,24 @@ GNUNET_SQ_cleanup_result (struct GNUNET_SQ_ResultSpec *rs) | |||
105 | rs[i].cleaner (rs[i].cls); | 117 | rs[i].cleaner (rs[i].cls); |
106 | } | 118 | } |
107 | 119 | ||
120 | |||
121 | /** | ||
122 | * Reset @a stmt and log error. | ||
123 | * | ||
124 | * @param dbh database handle | ||
125 | * @param stmt statement to reset | ||
126 | */ | ||
127 | void | ||
128 | GNUNET_SQ_reset (sqlite3 *dbh, | ||
129 | sqlite3_stmt *stmt) | ||
130 | { | ||
131 | if (SQLITE_OK != | ||
132 | sqlite3_reset (stmt)) | ||
133 | GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | ||
134 | "sqlite", | ||
135 | _("Failed to reset sqlite statement with error: %s\n"), | ||
136 | sqlite3_errmsg (dbh)); | ||
137 | } | ||
138 | |||
139 | |||
108 | /* end of sq.c */ | 140 | /* end of sq.c */ |