diff options
| author | Ilia Alshanetsky <iliaa@php.net> | 2004-09-23 21:15:51 +0000 |
|---|---|---|
| committer | Ilia Alshanetsky <iliaa@php.net> | 2004-09-23 21:15:51 +0000 |
| commit | 1fc2b79172fb10030e499b0c40566dae1514a9d1 (patch) | |
| tree | 3baad0ca88213598618eea2cba09e27cac3a2e7f /ext/pdo_pgsql | |
| parent | 626caf02923598d06be0f65fff8faa4826f3c008 (diff) | |
| download | php-git-1fc2b79172fb10030e499b0c40566dae1514a9d1.tar.gz | |
Make handle error messages handle persistent situations better.
Diffstat (limited to 'ext/pdo_pgsql')
| -rw-r--r-- | ext/pdo_pgsql/pgsql_driver.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/ext/pdo_pgsql/pgsql_driver.c b/ext/pdo_pgsql/pgsql_driver.c index af8497e721..ca83332696 100644 --- a/ext/pdo_pgsql/pgsql_driver.c +++ b/ext/pdo_pgsql/pgsql_driver.c @@ -33,9 +33,10 @@ #include "php_pdo_pgsql_int.h" #include "zend_exceptions.h" -static char * _pdo_pgsql_trim_message(const char *message) +static char * _pdo_pgsql_trim_message(const char *message, int persistent) { register int i = strlen(message)-1; + char *tmp; if (i>1 && (message[i-1] == '\r' || message[i-1] == '\n') && message[i] == '.') { --i; @@ -44,7 +45,11 @@ static char * _pdo_pgsql_trim_message(const char *message) --i; } ++i; - return estrndup(message, i); + tmp = pemalloc(i + 1, persistent); + memcpy(tmp, message, i); + tmp[i] = '\0'; + + return tmp; } int _pdo_pgsql_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt, int errcode, const char *file, int line TSRMLS_DC) /* {{{ */ @@ -59,7 +64,7 @@ int _pdo_pgsql_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt, int errcode, const char * einfo->line = line; if (einfo->errmsg) { - efree(einfo->errmsg); + pefree(einfo->errmsg, dbh->is_persistent); einfo->errmsg = NULL; } @@ -74,7 +79,7 @@ int _pdo_pgsql_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt, int errcode, const char * } if (errmsg) { - einfo->errmsg = _pdo_pgsql_trim_message(errmsg); + einfo->errmsg = _pdo_pgsql_trim_message(errmsg, dbh->is_persistent); } if (!dbh->methods) { @@ -109,7 +114,7 @@ static int pgsql_handle_closer(pdo_dbh_t *dbh TSRMLS_DC) /* {{{ */ H->server = NULL; } if (H->einfo.errmsg) { - efree(H->einfo.errmsg); + pefree(H->einfo.errmsg, dbh->is_persistent); H->einfo.errmsg = NULL; } pefree(H, dbh->is_persistent); |
