packages: php/php.spec, php/php-bug-50458.patch (NEW) - add patch for bug#5...

zergin zergin at pld-linux.org
Wed Dec 16 00:57:35 CET 2009


Author: zergin                       Date: Tue Dec 15 23:57:35 2009 GMT
Module: packages                      Tag: HEAD
---- Log message:
- add patch for bug#50458 (to be removed with 5.3.2)
- up rel 1.11 to 1.12

---- Files affected:
packages/php:
   php.spec (1.830 -> 1.831) , php-bug-50458.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: packages/php/php.spec
diff -u packages/php/php.spec:1.830 packages/php/php.spec:1.831
--- packages/php/php.spec:1.830	Wed Dec  2 11:29:07 2009
+++ packages/php/php.spec	Wed Dec 16 00:57:29 2009
@@ -106,7 +106,7 @@
 %undefine	with_filter
 %endif
 
-%define		rel		1.11
+%define		rel		1.12
 Summary:	PHP: Hypertext Preprocessor
 Summary(fr.UTF-8):	Le langage de script embarque-HTML PHP
 Summary(pl.UTF-8):	Język skryptowy PHP
@@ -140,6 +140,8 @@
 Patch8:		%{name}-config-file-scan-dir.patch
 Patch9:		%{name}-sh.patch
 Patch10:	%{name}-ini.patch
+# untill 5.3.2 when this gets released
+Patch11:	%{name}-bug-50458.patch
 %if %{with type_hints}
 Patch12:	http://ilia.ws/patch/type_hint_53_v2.txt
 %endif
@@ -1737,6 +1739,8 @@
 %patch51 -p1
 %patch52 -p1
 
+%patch11 -p4
+
 # cleanup backups after patching
 find '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
 
@@ -2929,6 +2933,10 @@
 All persons listed below can be reached at <cvs_login>@pld-linux.org
 
 $Log$
+Revision 1.831  2009/12/15 23:57:29  zergin
+- add patch for bug#50458 (to be removed with 5.3.2)
+- up rel 1.11 to 1.12
+
 Revision 1.830  2009/12/02 10:29:07  glen
 - CLI borked
 

================================================================
Index: packages/php/php-bug-50458.patch
diff -u /dev/null packages/php/php-bug-50458.patch:1.1
--- /dev/null	Wed Dec 16 00:57:35 2009
+++ packages/php/php-bug-50458.patch	Wed Dec 16 00:57:30 2009
@@ -0,0 +1,115 @@
+--- php/php-src/branches/PHP_5_3/ext/pdo/pdo_stmt.c	2009/12/11 22:30:46	292003
++++ php/php-src/branches/PHP_5_3/ext/pdo/pdo_stmt.c	2009/12/14 03:44:33	292107
+@@ -784,95 +784,20 @@
+ 
+ static int make_callable_ex(pdo_stmt_t *stmt, zval *callable, zend_fcall_info * fci, zend_fcall_info_cache * fcc, int num_args TSRMLS_DC) /* {{{ */
+ {
+-	zval *object = NULL, **method = NULL;
+-	char *fname = NULL, *cname;
+-	zend_class_entry * ce = NULL, **pce;
+-	zend_function *function_handler;
+-	
+-	if (Z_TYPE_P(callable) == IS_ARRAY) {
+-		if (Z_ARRVAL_P(callable)->nNumOfElements < 2) {
+-			pdo_raise_impl_error(stmt->dbh, stmt, "HY000", "user-supplied function must be a valid callback" TSRMLS_CC);
+-			return 0;
+-		}
+-		object = *(zval**)Z_ARRVAL_P(callable)->pListHead->pData;
+-		method = (zval**)Z_ARRVAL_P(callable)->pListHead->pListNext->pData;
++	char *is_callable_error = NULL;
+ 
+-		if (Z_TYPE_P(object) == IS_STRING) { /* static call */
+-			if (zend_lookup_class(Z_STRVAL_P(object), Z_STRLEN_P(object), &pce TSRMLS_CC) == FAILURE) {
+-				pdo_raise_impl_error(stmt->dbh, stmt, "HY000", "user-supplied class does not exist" TSRMLS_CC);
+-				return 0;
+-			} else {
+-				ce = *pce;
+-			}
+-			object = NULL;
+-		} else if (Z_TYPE_P(object) == IS_OBJECT) { /* object call */
+-			ce = Z_OBJCE_P(object);
++	if (zend_fcall_info_init(callable, 0, fci, fcc, NULL, &is_callable_error TSRMLS_CC) == FAILURE) { 
++		if (is_callable_error) {
++			pdo_raise_impl_error(stmt->dbh, stmt, "HY000", is_callable_error TSRMLS_CC);
++			efree(is_callable_error);
+ 		} else {
+-			pdo_raise_impl_error(stmt->dbh, stmt, "HY000", "user-supplied function must be a valid callback; bogus object/class name" TSRMLS_CC);
+-			return 0;
+-		}
+-		
+-		if (Z_TYPE_PP(method) != IS_STRING) {
+-			pdo_raise_impl_error(stmt->dbh, stmt, "HY000", "user-supplied function must be a valid callback; bogus method name" TSRMLS_CC);
+-			return 0;
+-		}
+-	} else if (Z_TYPE_P(callable) == IS_STRING) {
+-		method = &callable;
+-	}
+-	
+-	if (!method || !zend_is_callable(callable, 0, &fname TSRMLS_CC)) {
+-		pdo_raise_impl_error(stmt->dbh, stmt, "HY000", "user-supplied function must be a valid callback" TSRMLS_CC);
+-		if (fname) {
+-			efree(fname);
++			pdo_raise_impl_error(stmt->dbh, stmt, "HY000", "user-supplied function must be a valid callback" TSRMLS_CC);
+ 		}
+ 		return 0;
+ 	}
+ 	
+-	/* ATM we do not support array($obj, "CLASS::FUNC") or "CLASS_FUNC" */
+-	cname = fname;
+-	if ((fname = strstr(fname, "::")) == NULL) {
+-		fname = cname;
+-		cname = NULL;
+-	} else {
+-		*fname = '\0';
+-		fname += 2;
+-	}
+-	if (cname) {
+-		if (zend_lookup_class(cname, strlen(cname), &pce TSRMLS_CC) == FAILURE) {
+-			pdo_raise_impl_error(stmt->dbh, stmt, "HY000", "user-supplied class does not exist" TSRMLS_CC);
+-			return 0;
+-		} else {
+-			if (ce) {
+-				/* pce must be base of ce or ce itself */
+-				if (ce != *pce && !instanceof_function(ce, *pce TSRMLS_CC)) {
+-					pdo_raise_impl_error(stmt->dbh, stmt, "HY000", "user-supplied class has bogus lineage" TSRMLS_CC);
+-					return 0;
+-				}
+-			}
+-			ce = *pce;
+-		}
+-	}
+-
+-	zend_str_tolower_copy(fname, fname, strlen(fname));
+-	fci->function_table = ce ? &ce->function_table : EG(function_table);
+-	if (zend_hash_find(fci->function_table, fname, strlen(fname)+1, (void **)&function_handler) == FAILURE) {
+-		pdo_raise_impl_error(stmt->dbh, stmt, "HY000", "user-supplied function does not exist" TSRMLS_CC);
+-		return 0;
+-	}
+-	efree(cname ? cname : fname);
+-
+-	fci->size = sizeof(zend_fcall_info);
+-	fci->function_name = NULL;
+-	fci->symbol_table = NULL;
+ 	fci->param_count = num_args; /* probably less */
+ 	fci->params = safe_emalloc(sizeof(zval**), num_args, 0);
+-	fci->object_ptr = object;
+-
+-	fcc->initialized = 1;
+-	fcc->function_handler = function_handler;
+-	fcc->calling_scope = EG(scope);
+-	fcc->called_scope = object ? Z_OBJCE_P(object) : NULL;
+-	fcc->object_ptr = object;
+ 	
+ 	return 1;
+ }
+@@ -1568,7 +1493,9 @@
+ 		case 3:
+ 		case 2:
+ 			stmt->fetch.func.function = arg2;
+-			do_fetch_func_prepare(stmt TSRMLS_CC);
++			if (do_fetch_func_prepare(stmt TSRMLS_CC) == 0) {
++				error = 1;
++			}
+ 			break;
+ 		}
+ 		break;
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/php/php.spec?r1=1.830&r2=1.831&f=u



More information about the pld-cvs-commit mailing list