summaryrefslogtreecommitdiff
path: root/databases/php5-pgsql
diff options
context:
space:
mode:
authorAlex Dupre <ale@FreeBSD.org>2008-01-29 10:14:37 +0000
committerAlex Dupre <ale@FreeBSD.org>2008-01-29 10:14:37 +0000
commit28a4f1ef3cc390ec7a5f7355da2dbdbd89eb13c4 (patch)
tree87b1464a8ef5a609ce13b15e8093bbb02222286a /databases/php5-pgsql
parentAdd SHA256 checksum for alpha binaries (diff)
Fixes for 64-bit systems.
PR: ports/120088 Submitted by: mm Patch from: mi
Notes
Notes: svn path=/head/; revision=206361
Diffstat (limited to 'databases/php5-pgsql')
-rw-r--r--databases/php5-pgsql/files/patch-pgsql.c100
1 files changed, 100 insertions, 0 deletions
diff --git a/databases/php5-pgsql/files/patch-pgsql.c b/databases/php5-pgsql/files/patch-pgsql.c
new file mode 100644
index 000000000000..ecc1fdd2f193
--- /dev/null
+++ b/databases/php5-pgsql/files/patch-pgsql.c
@@ -0,0 +1,100 @@
+--- 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 **)&notice, sizeof(php_pgsql_notice *), NULL);
++ zend_hash_index_update(&PGG(notices), (ulong)resource_id, (void **)&notice, 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);
+