summaryrefslogtreecommitdiff
path: root/src/interfaces/odbc/statement.c
diff options
context:
space:
mode:
authorHiroshi Inoue <inoue@tpf.co.jp>2001-06-20 07:06:40 +0000
committerHiroshi Inoue <inoue@tpf.co.jp>2001-06-20 07:06:40 +0000
commit9c50a0047fcaaa2e9d85620418c71132461ac550 (patch)
tree752b75c8248527147460bee74db27c521c26526d /src/interfaces/odbc/statement.c
parentf5d0c6cad5bb2706e0e63f3f8f32e431ea428100 (diff)
Change the driver so that large error messages are returned
by multiple SQLError calls.
Diffstat (limited to 'src/interfaces/odbc/statement.c')
-rw-r--r--src/interfaces/odbc/statement.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/interfaces/odbc/statement.c b/src/interfaces/odbc/statement.c
index ba6ca3efbd4..fd77eee6d6c 100644
--- a/src/interfaces/odbc/statement.c
+++ b/src/interfaces/odbc/statement.c
@@ -248,6 +248,7 @@ SC_Constructor(void)
rv->errormsg = NULL;
rv->errornumber = 0;
rv->errormsg_created = FALSE;
+ rv->errormsg_malloced = FALSE;
rv->statement = NULL;
rv->stmt_with_params = NULL;
@@ -530,9 +531,12 @@ SC_recycle_statement(StatementClass *self)
self->bind_row = 0;
self->last_fetch_count = 0;
+ if (self->errormsg_malloced && self->errormsg)
+ free(self->errormsg);
self->errormsg = NULL;
self->errornumber = 0;
self->errormsg_created = FALSE;
+ self->errormsg_malloced = FALSE;
self->lobj_fd = -1;
@@ -610,9 +614,12 @@ SC_unbind_cols(StatementClass *self)
void
SC_clear_error(StatementClass *self)
{
+ if (self->errormsg_malloced && self->errormsg)
+ free(self->errormsg);
self->errornumber = 0;
self->errormsg = NULL;
self->errormsg_created = FALSE;
+ self->errormsg_malloced = FALSE;
}
@@ -675,7 +682,8 @@ SC_get_error(StatementClass *self, int *number, char **message)
{
*number = self->errornumber;
*message = self->errormsg;
- self->errormsg = NULL;
+ if (!self->errormsg_malloced)
+ self->errormsg = NULL;
}
rv = (self->errornumber != 0);