diff options
| author | Alex Dupre <ale@FreeBSD.org> | 2008-01-29 10:14:37 +0000 | 
|---|---|---|
| committer | Alex Dupre <ale@FreeBSD.org> | 2008-01-29 10:14:37 +0000 | 
| commit | 28a4f1ef3cc390ec7a5f7355da2dbdbd89eb13c4 (patch) | |
| tree | 87b1464a8ef5a609ce13b15e8093bbb02222286a /databases/php5-pgsql/files/patch-pgsql.c | |
| parent | Add SHA256 checksum for alpha binaries (diff) | |
Fixes for 64-bit systems.
PR:		ports/120088
Submitted by:	mm
Patch from:	mi
Diffstat (limited to '')
| -rw-r--r-- | databases/php5-pgsql/files/patch-pgsql.c | 100 | 
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 **)¬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); +  | 
