com php-src: Merge remote-tracking branch 'origin/master' into str_size_and_int64: ext/mysqli/mysqli_api.c ext/openssl/openssl.c ext/pgsql/pgsql.c
ext/pgsql/ph p_pgsql.h

From: Date: Sat, 15 Feb 2014 22:12:40 +0000
Subject: com php-src: Merge remote-tracking branch 'origin/master' into str_size_and_int64: ext/mysqli/mysqli_api.c ext/openssl/openssl.c ext/pgsql/pgsql.c
ext/pgsql/ph p_pgsql.h
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-76006@lists.php.net to get a copy of this message
Commit: c9e2bfc424414673fab14b21e9fd352401ec8a9f Author: Anatol Belski <ab@php.net> Sat, 15 Feb 2014 23:12:40 +0100 Parents: b64462fd71a2d96e834e49c4da51cc4f200ae786 d10e83cf89bab6c158318bf4343e6ee774419427 Branches: str_size_and_int64 Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=c9e2bfc424414673fab14b21e9fd352401ec8a9f Log: Merge remote-tracking branch 'origin/master' into str_size_and_int64 Conflicts: ext/mysqli/mysqli_api.c ext/pgsql/pgsql.c Changed paths: MM ext/mysqli/mysqli_api.c MM ext/openssl/openssl.c MM ext/pgsql/pgsql.c MM ext/pgsql/php_pgsql.h

diff --cc ext/mysqli/mysqli_api.c index 206a396,c2d184b..29c65d7 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@@ -34,6 -34,64 +34,64 @@@ #include "php_mysqli_structs.h" #include "mysqli_priv.h" + #if !defined(MYSQLI_USE_MYSQLND) + /* {{{ mysqli_tx_cor_options_to_string */ + static void mysqli_tx_cor_options_to_string(const MYSQL * const conn, smart_str * str, const unsigned int mode) + { + if (mode & TRANS_COR_AND_CHAIN && !(mode & TRANS_COR_AND_NO_CHAIN)) { + if (str->len) { + smart_str_appendl(str, ", ", sizeof(", ") - 1); + } + smart_str_appendl(str, "AND CHAIN", sizeof("AND CHAIN") - 1); + } else if (mode & TRANS_COR_AND_NO_CHAIN && !(mode & TRANS_COR_AND_CHAIN)) { + if (str->len) { + smart_str_appendl(str, ", ", sizeof(", ") - 1); + } + smart_str_appendl(str, "AND NO CHAIN", sizeof("AND NO CHAIN") - 1); + } + + if (mode & TRANS_COR_RELEASE && !(mode & TRANS_COR_NO_RELEASE)) { + if (str->len) { + smart_str_appendl(str, ", ", sizeof(", ") - 1); + } + smart_str_appendl(str, "RELEASE", sizeof("RELEASE") - 1); + } else if (mode & TRANS_COR_NO_RELEASE && !(mode & TRANS_COR_RELEASE)) { + if (str->len) { + smart_str_appendl(str, ", ", sizeof(", ") - 1); + } + smart_str_appendl(str, "NO RELEASE", sizeof("NO RELEASE") - 1); + } + smart_str_0(str); + } + /* }}} */ + + + /* {{{ proto bool mysqli_commit_or_rollback_libmysql */ + static int mysqli_commit_or_rollback_libmysql(MYSQL * conn, zend_bool commit, const unsigned int mode, const char * const name) + { + int ret; + smart_str tmp_str = {0, 0, 0}; + mysqli_tx_cor_options_to_string(conn, &tmp_str, mode); + smart_str_0(&tmp_str); + + { + char * commented_name = NULL; - unsigned int commented_name_len = name? spprintf(&commented_name, 0, " /*%s*/", name):0; ++ php_size_t commented_name_len = name? spprintf(&commented_name, 0, " /*%s*/", name):0; + char * query; - unsigned int query_len = spprintf(&query, 0, (commit? "COMMIT%s %s":"ROLLBACK%s %s"), ++ php_size_t query_len = spprintf(&query, 0, (commit? "COMMIT%s %s":"ROLLBACK%s %s"), + commented_name? commented_name:"", tmp_str.c? tmp_str.c:""); + smart_str_free(&tmp_str); + + ret = mysql_real_query(conn, query, query_len); + efree(query); + if (commented_name) { + efree(commented_name); + } + } + } + /* }}} */ + #endif + /* {{{ proto mixed mysqli_affected_rows(object link) Get number of affected rows in previous MySQL operation */ PHP_FUNCTION(mysqli_affected_rows) diff --cc ext/pgsql/pgsql.c index ab88140,ea2d64b..e0ee980 --- a/ext/pgsql/pgsql.c +++ b/ext/pgsql/pgsql.c @@@ -761,10 -756,109 +761,109 @@@ ZEND_GET_MODULE(pgsql static int le_link, le_plink, le_result, le_lofp, le_string; + /* Compatibility definitions */ + + #ifndef HAVE_PGSQL_WITH_MULTIBYTE_SUPPORT + #define pg_encoding_to_char(x) "SQL_ASCII" + #endif + + #if !HAVE_PQESCAPE_CONN + #define PQescapeStringConn(conn, to, form, len, error) PQescapeString(to, from, len) + #endif + + #if HAVE_PQESCAPELITERAL + #define PGSQLescapeLiteral(conn, str, len) PQescapeLiteral(conn, str, len) + #define PGSQLescapeIdentifier(conn, str, len) PQescapeIdentifier(conn, str, len) + #define PGSQLfree(a) PQfreemem(a) + #else + #define PGSQLescapeLiteral(conn, str, len) php_pgsql_PQescapeInternal(conn, str, len, 1, 0) + #define PGSQLescapeLiteral2(conn, str, len) php_pgsql_PQescapeInternal(conn, str, len, 1, 1) + #define PGSQLescapeIdentifier(conn, str, len) php_pgsql_PQescapeInternal(conn, str, len, 0, 0) + #define PGSQLfree(a) efree(a) + + /* emulate libpq's PQescapeInternal() 9.0 or later */ + static char* php_pgsql_PQescapeInternal(PGconn *conn, const char *str, size_t len, int escape_literal, int safe) { + char *result, *rp, *s; + size_t tmp_len; + + if (!conn) { + return NULL; + } + + /* allocate enough memory */ + rp = result = (char *)safe_emalloc(len, 2, 5); /* leading " E" needs extra 2 bytes + quote_chars on both end for 2 bytes + NULL */ + + if (escape_literal) { + size_t new_len; + + if (safe) { + char *tmp = (char *)safe_emalloc(len, 2, 1); + *rp++ = '\''; + /* PQescapeString does not escape \, but it handles multibyte chars safely. + This escape is incompatible with PQescapeLiteral. */ + new_len = PQescapeStringConn(conn, tmp, str, len, NULL); + strncpy(rp, tmp, new_len); + efree(tmp); + rp += new_len; + } else { + char *encoding; + /* This is compatible with PQescapeLiteral, but it cannot handle multbyte chars + such as SJIS, BIG5. Raise warning and return NULL by checking + client_encoding. */ + encoding = (char *) pg_encoding_to_char(PQclientEncoding(conn)); + if (!strncmp(encoding, "SJIS", sizeof("SJIS")-1) || + !strncmp(encoding, "SHIFT_JIS_2004", sizeof("SHIFT_JIS_2004")-1) || + !strncmp(encoding, "BIG5", sizeof("BIG5")-1) || + !strncmp(encoding, "GB18030", sizeof("GB18030")-1) || + !strncmp(encoding, "GBK", sizeof("GBK")-1) || + !strncmp(encoding, "JOHAB", sizeof("JOHAB")-1) || + !strncmp(encoding, "UHC", sizeof("UHC")-1) ) { + TSRMLS_FETCH(); + + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unsafe encoding is used. Do not use '%s' encoding or use PostgreSQL 9.0 or later libpq.", encoding); + } + /* check backslashes */ + tmp_len = strspn(str, "\\"); + if (tmp_len != len) { + /* add " E" for escaping slashes */ + *rp++ = ' '; + *rp++ = 'E'; + } + *rp++ = '\''; + for (s = (char *)str; s - str < len; ++s) { + if (*s == '\'' || *s == '\\') { + *rp++ = *s; + *rp++ = *s; + } else { + *rp++ = *s; + } + } + } + *rp++ = '\''; + } else { + /* Identifier escape. */ + *rp++ = '"'; + for (s = (char *)str; s - str < len; ++s) { + if (*s == '"') { + *rp++ = '"'; + *rp++ = '"'; + } else { + *rp++ = *s; + } + } + *rp++ = '"'; + } + *rp = '\0'; + + return result; + } + #endif + + /* {{{ _php_pgsql_trim_message */ -static char * _php_pgsql_trim_message(const char *message, int *len) +static char * _php_pgsql_trim_message(const char *message, php_size_t *len) { - register int i = strlen(message)-1; + register php_size_t i = strlen(message)-1; if (i>1 && (message[i-1] == '\r' || message[i-1] == '\n') && message[i] == '.') { --i; @@@ -797,8 -891,8 +896,8 @@@ static inline char * _php_pgsql_trim_re /* {{{ php_pgsql_set_default_link */ -static void php_pgsql_set_default_link(int id TSRMLS_DC) +static void php_pgsql_set_default_link(php_int_t id TSRMLS_DC) - { + { zend_list_addref(id); if (PGG(default_link) != -1) { @@@ -959,37 -1053,7 +1058,6 @@@ static int _php_pgsql_detect_identifier return SUCCESS; } - #if !HAVE_PQESCAPELITERAL - /* {{{ _php_pgsql_escape_identifier - * Since PQescapeIdentifier() is unavailable (PostgreSQL 9.0 <), idenfifers - * should be escaped by pgsql module. - * Note: this function does not care for encoding. Therefore users should not - * use this with SJIS/BIG5 etc. (i.e. Encoding base injection may possible with - * before PostgreSQL 9.0) - */ - static char *_php_pgsql_escape_identifier(const char *field, size_t field_len) - { - size_t field_escaped_len = field_len*2 + 3; - size_t i, j = 0; - char *field_escaped; - - field_escaped = (char *)malloc(field_escaped_len); - field_escaped[j++] = '"'; - for (i = 0; i < field_len; i++) { - if (field[i] == '"') { - field_escaped[j++] = '"'; - field_escaped[j++] = '"'; - } else { - field_escaped[j++] = field[i]; - } - } - field_escaped[j++] = '"'; - field_escaped[j] = '\0'; - return field_escaped; - } - /* }}} */ - #endif -- /* {{{ _php_pgsql_strndup, no strndup should be used */ static char *_php_pgsql_strndup(const char *s, size_t len) { @@@ -1174,10 -1238,10 +1242,10 @@@ PHP_MINFO_FUNCTION(pgsql #else php_info_print_table_row(2, "SSL support", "disabled"); #endif - #endif /* HAVE_PG_CONFIG_H */ + #endif /* HAVE_PG_CONFIG_H */ - snprintf(buf, sizeof(buf), "%ld", PGG(num_persistent)); + snprintf(buf, sizeof(buf), "%pd", PGG(num_persistent)); php_info_print_table_row(2, "Active Persistent Links", buf); - snprintf(buf, sizeof(buf), "%ld", PGG(num_links)); + snprintf(buf, sizeof(buf), "%pd", PGG(num_links)); php_info_print_table_row(2, "Active Links", buf); php_info_print_table_end(); @@@ -1432,10 -1495,9 +1500,10 @@@ PHP_FUNCTION(pg_pconnect PHP_FUNCTION(pg_close) { zval *pgsql_link = NULL; - int id = -1, argc = ZEND_NUM_ARGS(); + php_int_t id = -1; + int argc = ZEND_NUM_ARGS(); PGconn *pgsql; - + if (zend_parse_parameters(argc TSRMLS_CC, "|r", &pgsql_link) == FAILURE) { return; } @@@ -2313,10 -2368,9 +2382,9 @@@ PHP_FUNCTION(pg_field_table RETURN_FALSE; } - if (return_oid) { -#if UINT_MAX > LONG_MAX /* Oid is unsigned int, we don't need this code, where LONG is wider */ - if (oid > LONG_MAX) { +#if UINT_MAX > PHP_INT_MAX /* Oid is unsigned int, we don't need this code, where LONG is wider */ + if (oid > PHP_INT_MAX) { smart_str oidstr = {0}; smart_str_append_unsigned(&oidstr, oid); smart_str_0(&oidstr); @@@ -2388,11 -2441,11 +2455,11 @@@ static void php_pgsql_get_field_info(IN PGresult *pgsql_result; pgsql_result_handle *pg_result; Oid oid; - + - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &result, &field) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ri", &result, &field) == FAILURE) { return; } - + ZEND_FETCH_RESOURCE(pg_result, pgsql_result_handle *, &result, -1, "PostgreSQL result", le_result); pgsql_result = pg_result->result; @@@ -2485,16 -2538,16 +2552,16 @@@ PHP_FUNCTION(pg_field_num PGresult *pgsql_result; pgsql_result_handle *pg_result; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &result, &field, &field_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rS", &result, &field, &field_len) == FAILURE) { return; } - + ZEND_FETCH_RESOURCE(pg_result, pgsql_result_handle *, &result, -1, "PostgreSQL result", le_result); pgsql_result = pg_result->result; - + - Z_LVAL_P(return_value) = PQfnumber(pgsql_result, field); - Z_TYPE_P(return_value) = IS_LONG; + Z_IVAL_P(return_value) = PQfnumber(pgsql_result, field); + Z_TYPE_P(return_value) = IS_INT; } /* }}} */ @@@ -2918,16 -2971,16 +2985,16 @@@ static void php_pgsql_data_info(INTERNA php_error_docref(NULL TSRMLS_CC, E_WARNING, "Bad column offset specified"); RETURN_FALSE; } - + switch (entry_type) { case PHP_PG_DATA_LENGTH: - Z_LVAL_P(return_value) = PQgetlength(pgsql_result, pgsql_row, field_offset); + Z_IVAL_P(return_value) = PQgetlength(pgsql_result, pgsql_row, field_offset); break; case PHP_PG_DATA_ISNULL: - Z_LVAL_P(return_value) = PQgetisnull(pgsql_result, pgsql_row, field_offset); + Z_IVAL_P(return_value) = PQgetisnull(pgsql_result, pgsql_row, field_offset); break; } - Z_TYPE_P(return_value) = IS_LONG; + Z_TYPE_P(return_value) = IS_INT; } /* }}} */ @@@ -3013,8 -3065,8 +3080,8 @@@ PHP_FUNCTION(pg_trace FILE *fp = NULL; php_stream *stream; id = PGG(default_link); - + - if (zend_parse_parameters(argc TSRMLS_CC, "s|sr", &z_filename, &z_filename_len, &mode, &mode_len, &pgsql_link) == FAILURE) { + if (zend_parse_parameters(argc TSRMLS_CC, "S|Sr", &z_filename, &z_filename_len, &mode, &mode_len, &pgsql_link) == FAILURE) { return; } @@@ -3076,11 -3127,10 +3143,11 @@@ PHP_FUNCTION(pg_untrace Create a large object */ PHP_FUNCTION(pg_lo_create) { - zval *pgsql_link = NULL, *oid = NULL; - PGconn *pgsql; - Oid pgsql_oid, wanted_oid = InvalidOid; - php_int_t id = -1; + zval *pgsql_link = NULL, *oid = NULL; + PGconn *pgsql; + Oid pgsql_oid, wanted_oid = InvalidOid; - int id = -1, argc = ZEND_NUM_ARGS(); ++ php_int_t id = -1; + int argc = ZEND_NUM_ARGS(); if (zend_parse_parameters(argc TSRMLS_CC, "|zz", &pgsql_link, &oid) == FAILURE) { return; @@@ -3107,10 -3157,10 +3174,10 @@@ #else switch (Z_TYPE_P(oid)) { case IS_STRING: - { + { char *end_ptr; wanted_oid = (Oid)strtoul(Z_STRVAL_P(oid), &end_ptr, 10); - if ((Z_STRVAL_P(oid)+Z_STRLEN_P(oid)) != end_ptr) { + if ((Z_STRVAL_P(oid)+Z_STRSIZE_P(oid)) != end_ptr) { /* wrong integer format */ php_error_docref(NULL TSRMLS_CC, E_NOTICE, "invalid OID value passed"); RETURN_FALSE; @@@ -3369,10 -3418,9 +3436,10 @@@ PHP_FUNCTION(pg_lo_close Read a large object */ PHP_FUNCTION(pg_lo_read) { - zval *pgsql_id; - php_int_t len; + zval *pgsql_id; - long len; - int buf_len = PGSQL_LO_READ_BUF_SIZE, nbytes, argc = ZEND_NUM_ARGS(); ++ php_int_t len; + php_size_t buf_len = PGSQL_LO_READ_BUF_SIZE, nbytes; + int argc = ZEND_NUM_ARGS(); char *buf; pgLofp *pgsql; @@@ -3511,10 -3557,10 +3578,10 @@@ PHP_FUNCTION(pg_lo_import Oid wanted_oid; switch (Z_TYPE_P(oid)) { case IS_STRING: - { + { char *end_ptr; wanted_oid = (Oid)strtoul(Z_STRVAL_P(oid), &end_ptr, 10); - if ((Z_STRVAL_P(oid)+Z_STRLEN_P(oid)) != end_ptr) { + if ((Z_STRVAL_P(oid)+Z_STRSIZE_P(oid)) != end_ptr) { /* wrong integer format */ php_error_docref(NULL TSRMLS_CC, E_NOTICE, "invalid OID value passed"); RETURN_FALSE; @@@ -3720,7 -3765,7 +3787,7 @@@ PHP_FUNCTION(pg_lo_truncate int argc = ZEND_NUM_ARGS(); int result; -- if (zend_parse_parameters(argc TSRMLS_CC, "rl", &pgsql_id, &size) == FAILURE) { ++ if (zend_parse_parameters(argc TSRMLS_CC, "ri", &pgsql_id, &size) == FAILURE) { return; } @@@ -3844,12 -3886,8 +3911,8 @@@ PHP_FUNCTION(pg_client_encoding /* Just do the same as found in PostgreSQL sources... */ - #ifndef HAVE_PGSQL_WITH_MULTIBYTE_SUPPORT - #define pg_encoding_to_char(x) "SQL_ASCII" - #endif - Z_STRVAL_P(return_value) = (char *) pg_encoding_to_char(PQclientEncoding(pgsql)); - Z_STRLEN_P(return_value) = strlen(Z_STRVAL_P(return_value)); + Z_STRSIZE_P(return_value) = strlen(Z_STRVAL_P(return_value)); Z_STRVAL_P(return_value) = (char *) estrdup(Z_STRVAL_P(return_value)); Z_TYPE_P(return_value) = IS_STRING; } @@@ -4230,11 -4265,10 +4293,10 @@@ PHP_FUNCTION(pg_escape_string #ifdef HAVE_PQESCAPE_CONN if (pgsql_link != NULL || id != -1) { ZEND_FETCH_RESOURCE2(pgsql, PGconn *, &pgsql_link, id, "PostgreSQL link", le_link, le_plink); - to_len = (int) PQescapeStringConn(pgsql, to, from, (size_t)from_len, NULL); + to_len = (php_size_t) PQescapeStringConn(pgsql, to, from, (size_t)from_len, NULL); - } else + } else #endif - to_len = (int) PQescapeString(to, from, (size_t)from_len); + to_len = (php_size_t) PQescapeString(to, from, (size_t)from_len); RETURN_STRINGL(to, to_len, 0); } @@@ -4470,8 -4454,9 +4483,9 @@@ static void php_pgsql_escape_internal(I char *from = NULL, *to = NULL; zval *pgsql_link = NULL; PGconn *pgsql; - int from_len; - int id = -1; + php_size_t from_len; + php_int_t id = -1; + char *tmp; switch (ZEND_NUM_ARGS()) { case 1: @@@ -5322,11 -5290,11 +5322,11 @@@ PHP_FUNCTION(pg_meta_data { zval *pgsql_link; char *table_name; - uint table_name_len; + php_size_t table_name_len; PGconn *pgsql; - int id = -1; + php_int_t id = -1; - + - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rS", &pgsql_link, &table_name, &table_name_len) == FAILURE) { return; } @@@ -5494,10 -5463,10 +5495,10 @@@ static int php_pgsql_add_quotes(zval *s smart_str_appendc(&str, 'E'); smart_str_appendc(&str, '\''); - smart_str_appendl(&str, Z_STRVAL_P(src), Z_STRLEN_P(src)); + smart_str_appendl(&str, Z_STRVAL_P(src), Z_STRSIZE_P(src)); smart_str_appendc(&str, '\''); smart_str_0(&str); - + if (should_free) { efree(Z_STRVAL_P(src)); } @@@ -5639,10 -5608,10 +5640,10 @@@ PHP_PGSQL_API int php_pgsql_convert(PGc } } break; - + - case IS_LONG: + case IS_INT: case IS_BOOL: - if (Z_LVAL_PP(val)) { + if (Z_IVAL_PP(val)) { ZVAL_STRING(new_val, "'t'", 1); } else { @@@ -5682,14 -5651,14 +5683,14 @@@ } } break; - + case IS_DOUBLE: ZVAL_DOUBLE(new_val, Z_DVAL_PP(val)); - convert_to_long_ex(&new_val); + convert_to_int_ex(&new_val); break; - case IS_LONG: - ZVAL_LONG(new_val, Z_LVAL_PP(val)); + case IS_INT: + ZVAL_INT(new_val, Z_IVAL_PP(val)); break; case IS_NULL: @@@ -5724,11 -5693,11 +5725,11 @@@ } } break; - + - case IS_LONG: - ZVAL_LONG(new_val, Z_LVAL_PP(val)); + case IS_INT: + ZVAL_INT(new_val, Z_IVAL_PP(val)); break; - + case IS_DOUBLE: ZVAL_DOUBLE(new_val, Z_DVAL_PP(val)); break; @@@ -5759,26 -5728,20 +5760,20 @@@ } } else { + char *tmp; Z_TYPE_P(new_val) = IS_STRING; - #if HAVE_PQESCAPE_CONN - { - char *tmp; - tmp = (char *)safe_emalloc(Z_STRSIZE_PP(val), 2, 1); - Z_STRSIZE_P(new_val) = (int)PQescapeStringConn(pg_link, tmp, Z_STRVAL_PP(val), Z_STRSIZE_PP(val), NULL); - Z_STRVAL_P(new_val) = tmp; - } - #else - Z_STRVAL_P(new_val) = (int)PQescapeString(Z_STRVAL_PP(val), Z_STRSIZE_PP(val), &Z_STRSIZE_P(new_val), 0 TSRMLS_CC); - #endif - tmp = (char *)safe_emalloc(Z_STRLEN_PP(val), 2, 1); - Z_STRLEN_P(new_val) = (int)PQescapeStringConn(pg_link, tmp, Z_STRVAL_PP(val), Z_STRLEN_PP(val), NULL); ++ tmp = (char *)safe_emalloc(Z_STRSIZE_PP(val), 2, 1); ++ Z_STRSIZE_P(new_val) = (int)PQescapeStringConn(pg_link, tmp, Z_STRVAL_PP(val), Z_STRSIZE_PP(val), NULL); + Z_STRVAL_P(new_val) = tmp; php_pgsql_add_quotes(new_val, 1 TSRMLS_CC); } break; - + - case IS_LONG: - ZVAL_LONG(new_val, Z_LVAL_PP(val)); + case IS_INT: + ZVAL_INT(new_val, Z_IVAL_PP(val)); convert_to_string_ex(&new_val); break; - + case IS_DOUBLE: ZVAL_DOUBLE(new_val, Z_DVAL_PP(val)); convert_to_string_ex(&new_val); @@@ -5809,23 -5772,23 +5804,23 @@@ /* FIXME: Better regex must be used */ if (php_pgsql_convert_match(Z_STRVAL_PP(val), "^[0-9]+$", 0 TSRMLS_CC) == FAILURE) { err = 1; - } + } else { ZVAL_STRING(new_val, Z_STRVAL_PP(val), 1); - convert_to_long_ex(&new_val); + convert_to_int_ex(&new_val); } } break; - + case IS_DOUBLE: ZVAL_DOUBLE(new_val, Z_DVAL_PP(val)); - convert_to_long_ex(&new_val); + convert_to_int_ex(&new_val); break; - + - case IS_LONG: - ZVAL_LONG(new_val, Z_LVAL_PP(val)); + case IS_INT: + ZVAL_INT(new_val, Z_IVAL_PP(val)); break; - + case IS_NULL: ZVAL_STRING(new_val, "NULL", 1); break; @@@ -6070,15 -6033,15 +6065,15 @@@ smart_str_0(&s); efree(Z_STRVAL_P(new_val)); Z_STRVAL_P(new_val) = s.c; - Z_STRLEN_P(new_val) = s.len; + Z_STRSIZE_P(new_val) = s.len; } break; - + - case IS_LONG: - ZVAL_LONG(new_val, Z_LVAL_PP(val)); + case IS_INT: + ZVAL_INT(new_val, Z_IVAL_PP(val)); convert_to_string_ex(&new_val); break; - + case IS_DOUBLE: ZVAL_DOUBLE(new_val, Z_DVAL_PP(val)); convert_to_string_ex(&new_val); @@@ -6191,13 -6150,13 +6182,13 @@@ PHP_FUNCTION(pg_convert { zval *pgsql_link, *values; char *table_name; - int table_name_len; - ulong option = 0; + php_size_t table_name_len; + php_uint_t option = 0; PGconn *pg_link; - int id = -1; + php_int_t id = -1; - + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, - "rsa|l", &pgsql_link, &table_name, &table_name_len, &values, &option) == FAILURE) { + "rSa|i", &pgsql_link, &table_name, &table_name_len, &values, &option) == FAILURE) { return; } if (option & ~PGSQL_CONV_OPTS) { @@@ -6441,8 -6391,8 +6424,8 @@@ static inline int build_assignment_stri for (zend_hash_internal_pointer_reset_ex(ht, &pos); zend_hash_get_current_data_ex(ht, (void **)&val, &pos) == SUCCESS; zend_hash_move_forward_ex(ht, &pos)) { - key_type = zend_hash_get_current_key_ex(ht, &fld, &fld_len, &num_idx, 0, &pos); + key_type = zend_hash_get_current_key_ex(ht, &fld, &fld_len, &num_idx, 0, &pos); - if (key_type == HASH_KEY_IS_LONG) { + if (key_type == HASH_KEY_IS_INT) { php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Expects associative array for values to be inserted"); return -1; } @@@ -6452,13 -6402,13 +6435,13 @@@ } else { smart_str_appendc(querystr, '='); } - + switch(Z_TYPE_PP(val)) { case IS_STRING: - smart_str_appendl(querystr, Z_STRVAL_PP(val), Z_STRLEN_PP(val)); + smart_str_appendl(querystr, Z_STRVAL_PP(val), Z_STRSIZE_PP(val)); break; - case IS_LONG: - smart_str_append_long(querystr, Z_LVAL_PP(val)); + case IS_INT: + smart_str_append_int(querystr, Z_IVAL_PP(val)); break; case IS_DOUBLE: smart_str_appendl(querystr, buf, MIN(snprintf(buf, sizeof(buf), "%F", Z_DVAL_PP(val)), sizeof(buf)-1));
« previous php.cvs (#76006) next »