From: Edin Kadribasic Date: Sun, 6 Feb 2005 22:48:35 +0000 (+0000) Subject: Adjust for the new get_col api X-Git-Tag: RELEASE_0_2~51 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=22ff90f7ba88434df470a2b9b5038e225e32cbc3;p=php Adjust for the new get_col api --- diff --git a/ext/pdo_pgsql/pgsql_statement.c b/ext/pdo_pgsql/pgsql_statement.c index 4d535c5517..78d2cf8d93 100644 --- a/ext/pdo_pgsql/pgsql_statement.c +++ b/ext/pdo_pgsql/pgsql_statement.c @@ -39,20 +39,6 @@ #define OIDOID 26 -static void _pdo_pgsql_free_lobs(pdo_stmt_t *stmt TSRMLS_DC) -{ - pdo_pgsql_stmt *S = (pdo_pgsql_stmt*)stmt->driver_data; - int i; - - for (i=0; icolumn_count; i++) { - if (S->cols[i].lobval) { - free(S->cols[i].lobval); - S->cols[i].lobval = NULL; - S->cols[i].lobval = 0; - } - } -} - static int pgsql_stmt_dtor(pdo_stmt_t *stmt TSRMLS_DC) { pdo_pgsql_stmt *S = (pdo_pgsql_stmt*)stmt->driver_data; @@ -77,7 +63,6 @@ static int pgsql_stmt_dtor(pdo_stmt_t *stmt TSRMLS_DC) } if(S->cols) { - _pdo_pgsql_free_lobs(stmt TSRMLS_CC); efree(S->cols); S->cols = NULL; } @@ -141,9 +126,6 @@ static int pgsql_stmt_fetch(pdo_stmt_t *stmt, { pdo_pgsql_stmt *S = (pdo_pgsql_stmt*)stmt->driver_data; - /* free any allocated lob objects from the previos fetch operation */ - _pdo_pgsql_free_lobs(stmt TSRMLS_CC); - if (S->cursor_name) { char *ori_str = NULL; char *q = NULL; @@ -224,10 +206,12 @@ static int pgsql_stmt_describe(pdo_stmt_t *stmt, int colno TSRMLS_DC) return 1; } -static int pgsql_stmt_get_col(pdo_stmt_t *stmt, int colno, char **ptr, unsigned long *len TSRMLS_DC) +static int pgsql_stmt_get_col(pdo_stmt_t *stmt, int colno, char **ptr, unsigned long *len, int *caller_frees TSRMLS_DC) { pdo_pgsql_stmt *S = (pdo_pgsql_stmt*)stmt->driver_data; struct pdo_column_data *cols = stmt->columns; + char *tmp_ptr; + size_t tmp_len; if (!S->result) { return 0; @@ -256,9 +240,11 @@ static int pgsql_stmt_get_col(pdo_stmt_t *stmt, int colno, char **ptr, unsigned break; case PDO_PARAM_LOB: - S->cols[colno].lobval = PQunescapeBytea(*ptr, &(S->cols[colno].loblen)); - *ptr = S->cols[colno].lobval; - *len = S->cols[colno].loblen; + tmp_ptr = PQunescapeBytea(*ptr, &tmp_len); + *ptr = estrndup(tmp_ptr, tmp_len); + *len = tmp_len; + caller_frees = 1; + free(tmp_ptr); break; } } diff --git a/ext/pdo_pgsql/php_pdo_pgsql_int.h b/ext/pdo_pgsql/php_pdo_pgsql_int.h index 2955baf2a5..ee3e290f83 100644 --- a/ext/pdo_pgsql/php_pdo_pgsql_int.h +++ b/ext/pdo_pgsql/php_pdo_pgsql_int.h @@ -46,8 +46,6 @@ typedef struct { Oid pgsql_type; long intval; zend_bool boolval; - char *lobval; - size_t loblen; } pdo_pgsql_column; typedef struct {