mirror of
https://git.freebsd.org/ports.git
synced 2025-06-08 14:20:33 -04:00
100 lines
2.8 KiB
C
100 lines
2.8 KiB
C
--- pgsql.c.orig 2007-10-04 01:31:58.000000000 +0200
|
|
+++ pgsql.c 2008-01-29 11:10:15.000000000 +0100
|
|
@@ -62,6 +62,7 @@
|
|
#define PGSQL_MAX_LENGTH_OF_LONG 30
|
|
#define PGSQL_MAX_LENGTH_OF_DOUBLE 60
|
|
|
|
+#if UINT_MAX > LONG_MAX
|
|
#define PGSQL_RETURN_OID(oid) do { \
|
|
if (oid > LONG_MAX) { \
|
|
smart_str s = {0}; \
|
|
@@ -71,7 +72,9 @@
|
|
} \
|
|
RETURN_LONG((long)oid); \
|
|
} while(0)
|
|
-
|
|
+#else
|
|
+#define PGSQL_RETURN_OID(oid) RETURN_LONG((long)oid)
|
|
+#endif
|
|
|
|
#if HAVE_PQSETNONBLOCKING
|
|
#define PQ_SETNONBLOCKING(pg_link, flag) PQsetnonblocking(pg_link, flag)
|
|
@@ -272,7 +275,7 @@
|
|
static int le_link, le_plink, le_result, le_lofp, le_string;
|
|
|
|
/* {{{ _php_pgsql_trim_message */
|
|
-static char * _php_pgsql_trim_message(const char *message, int *len)
|
|
+static char * _php_pgsql_trim_message(const char *message, size_t *len)
|
|
{
|
|
register int i = strlen(message)-1;
|
|
|
|
@@ -363,7 +366,7 @@
|
|
if (PGG(log_notices)) {
|
|
php_error_docref(NULL TSRMLS_CC, E_NOTICE, "%s", notice->message);
|
|
}
|
|
- zend_hash_index_update(&PGG(notices), (int)resource_id, (void **)¬ice, sizeof(php_pgsql_notice *), NULL);
|
|
+ zend_hash_index_update(&PGG(notices), (ulong)resource_id, (void **)¬ice, sizeof(php_pgsql_notice *), NULL);
|
|
}
|
|
}
|
|
/* }}} */
|
|
@@ -761,13 +764,14 @@
|
|
*/
|
|
if (!(connect_type & PGSQL_CONNECT_FORCE_NEW)
|
|
&& zend_hash_find(&EG(regular_list),str.c,str.len+1,(void **) &index_ptr)==SUCCESS) {
|
|
- int type,link;
|
|
+ int type;
|
|
+ ulong link;
|
|
void *ptr;
|
|
|
|
if (Z_TYPE_P(index_ptr) != le_index_ptr) {
|
|
RETURN_FALSE;
|
|
}
|
|
- link = (int) index_ptr->ptr;
|
|
+ link = (uintptr_t /* ulong is as wide or wider than pointer */) index_ptr->ptr;
|
|
ptr = zend_list_find(link,&type); /* check if the link is still there */
|
|
if (ptr && (type==le_link || type==le_plink)) {
|
|
Z_LVAL_P(return_value) = link;
|
|
@@ -1748,12 +1752,15 @@
|
|
|
|
|
|
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) {
|
|
smart_str oidstr = {0};
|
|
smart_str_append_unsigned(&oidstr, oid);
|
|
smart_str_0(&oidstr);
|
|
RETURN_STRINGL(oidstr.c, oidstr.len, 0);
|
|
- } else {
|
|
+ } else
|
|
+#endif
|
|
+ {
|
|
RETURN_LONG((long)oid);
|
|
}
|
|
}
|
|
@@ -1854,6 +1861,7 @@
|
|
|
|
oid = PQftype(pgsql_result, Z_LVAL_PP(field));
|
|
|
|
+#if UINT_MAX > LONG_MAX
|
|
if (oid > LONG_MAX) {
|
|
smart_str s = {0};
|
|
smart_str_append_unsigned(&s, oid);
|
|
@@ -1863,6 +1871,7 @@
|
|
Z_TYPE_P(return_value) = IS_STRING;
|
|
}
|
|
else
|
|
+#endif
|
|
{
|
|
Z_LVAL_P(return_value) = (long)oid;
|
|
Z_TYPE_P(return_value) = IS_LONG;
|
|
@@ -5741,8 +5750,8 @@
|
|
{
|
|
zval *row;
|
|
char *field_name, *element, *data;
|
|
- size_t num_fields, element_len, data_len;
|
|
- int pg_numrows, pg_row;
|
|
+ size_t num_fields, element_len;
|
|
+ int pg_numrows, pg_row, data_len;
|
|
uint i;
|
|
assert(Z_TYPE_P(ret_array) == IS_ARRAY);
|
|
|