cvs: php4 /ext/pgsql pgsql.c

From: Date: Sat, 20 Apr 2002 03:03:43 +0000
Subject: cvs: php4 /ext/pgsql pgsql.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-11253@lists.php.net to get a copy of this message
yohgaki Fri Apr 19 23:03:43 2002 EDT Modified files: /php4/ext/pgsql pgsql.c Log: Fixed OID overflow. If value is larger than MAX_LONG, pg_last_oid() returns string to keep correct value. Index: php4/ext/pgsql/pgsql.c diff -u php4/ext/pgsql/pgsql.c:1.181 php4/ext/pgsql/pgsql.c:1.182 --- php4/ext/pgsql/pgsql.c:1.181 Fri Apr 19 22:31:48 2002 +++ php4/ext/pgsql/pgsql.c Fri Apr 19 23:03:42 2002 @@ -19,7 +19,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pgsql.c,v 1.181 2002/04/20 02:31:48 yohgaki Exp $ */ +/* $Id: pgsql.c,v 1.182 2002/04/20 03:03:42 yohgaki Exp $ */ #include <stdlib.h> @@ -48,6 +48,10 @@ #define PGSQL_STATUS_LONG 1 #define PGSQL_STATUS_STRING 2 +#define PGSQL_MAX_LENGTH_OF_LONG 30 +#define PGSQL_MAX_LENGTH_OF_DOUBLE 60 + + #if HAVE_PQSETNONBLOCKING #define PQ_SETNONBLOCKING(pg_link, flag) PQsetnonblocking(pg_link, flag) #else @@ -1476,6 +1480,8 @@ zval **result; PGresult *pgsql_result; pgsql_result_handle *pg_result; + uint oid; + char *oid_str; if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &result)==FAILURE) { WRONG_PARAM_COUNT; @@ -1484,18 +1490,23 @@ ZEND_FETCH_RESOURCE(pg_result, pgsql_result_handle *, result, -1, "PostgreSQL result", le_result); pgsql_result = pg_result->result; #ifdef HAVE_PQOIDVALUE - Z_LVAL_P(return_value) = (int) PQoidValue(pgsql_result); - if (Z_LVAL_P(return_value) == InvalidOid) { + oid = PQoidValue(pgsql_result); + if (oid == InvalidOid) { RETURN_FALSE; - } else { - Z_TYPE_P(return_value) = IS_LONG; + } else if (oid > LONG_MAX) { + oid_str = (char *)emalloc(PGSQL_MAX_LENGTH_OF_LONG+1); + sprintf(oid_str, "%l", oid); + RETVAL_STRING(oid_str, 0); + } + else { + RETVAL_LONG((long)oid); } #else Z_STRVAL_P(return_value) = (char *) PQoidStatus(pgsql_result); + Z_TYPE_P(return_value) = IS_STRING; if (Z_STRVAL_P(return_value)) { Z_STRLEN_P(return_value) = strlen(Z_STRVAL_P(return_value)); Z_STRVAL_P(return_value) = estrndup(Z_STRVAL_P(return_value), Z_STRLEN_P(return_value)); - Z_TYPE_P(return_value) = IS_STRING; } else { Z_STRVAL_P(return_value) = empty_string; } @@ -3757,9 +3768,6 @@ } } /* }}} */ - -#define PGSQL_MAX_LENGTH_OF_LONG 30 -#define PGSQL_MAX_LENGTH_OF_DOUBLE 60 /* {{{ php_pgsql_insert */

« previous php.cvs (#11253) next »