com php-src: Fixed support for references and proper string lengths: ext/pcntl/pcntl.c

From: Date: Tue, 06 May 2014 11:03:25 +0000
Subject: com php-src: Fixed support for references and proper string lengths: ext/pcntl/pcntl.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-78135@lists.php.net to get a copy of this message
Commit:    70a5e0e42981a2d38c9477741ab3242740034d47
Author:    Dmitry Stogov <dmitry@zend.com>         Tue, 6 May 2014 15:03:25 +0400
Parents:   6f5a0df570b3046523dd4ab9d5054be7f44df1f6
Branches:  phpng

Link:       http://git.php.net/?p=php-src.git;a=commitdiff;h=70a5e0e42981a2d38c9477741ab3242740034d47

Log:
Fixed support for references and proper string lengths

Changed paths:
  M  ext/pcntl/pcntl.c


Diff:
diff --git a/ext/pcntl/pcntl.c b/ext/pcntl/pcntl.c
index 91441b1..f50f052 100644
--- a/ext/pcntl/pcntl.c
+++ b/ext/pcntl/pcntl.c
@@ -955,6 +955,7 @@ PHP_FUNCTION(pcntl_sigprocmask)
 	}
 
 	if (user_oldset != NULL) {
+		ZVAL_DEREF(user_oldset);
 		if (Z_TYPE_P(user_oldset) != IS_ARRAY) {
 			zval_dtor(user_oldset);
 			array_init(user_oldset);
@@ -1037,40 +1038,41 @@ static void pcntl_sigwaitinfo(INTERNAL_FUNCTION_PARAMETERS, int timedwait)
/* {{
 	}
 
 	if (signo > 0 && user_siginfo) {
+		ZVAL_DEREF(user_siginfo);
 		if (Z_TYPE_P(user_siginfo) != IS_ARRAY) {
 			zval_dtor(user_siginfo);
 			array_init(user_siginfo);
 		} else {
 			zend_hash_clean(Z_ARRVAL_P(user_siginfo));
 		}
-		add_assoc_long_ex(user_siginfo, "signo", sizeof("signo"), siginfo.si_signo);
-		add_assoc_long_ex(user_siginfo, "errno", sizeof("errno"), siginfo.si_errno);
-		add_assoc_long_ex(user_siginfo, "code",  sizeof("code"),  siginfo.si_code);
+		add_assoc_long_ex(user_siginfo, "signo", sizeof("signo")-1,
siginfo.si_signo);
+		add_assoc_long_ex(user_siginfo, "errno", sizeof("errno")-1,
siginfo.si_errno);
+		add_assoc_long_ex(user_siginfo, "code",  sizeof("code")-1,  siginfo.si_code);
 		switch(signo) {
 #ifdef SIGCHLD
 			case SIGCHLD:
-				add_assoc_long_ex(user_siginfo,   "status", sizeof("status"),
siginfo.si_status);
+				add_assoc_long_ex(user_siginfo,   "status", sizeof("status")-1,
siginfo.si_status);
 # ifdef si_utime
-				add_assoc_double_ex(user_siginfo, "utime",  sizeof("utime"), 
siginfo.si_utime);
+				add_assoc_double_ex(user_siginfo, "utime",  sizeof("utime")-1, 
siginfo.si_utime);
 # endif
 # ifdef si_stime
-				add_assoc_double_ex(user_siginfo, "stime",  sizeof("stime"), 
siginfo.si_stime);
+				add_assoc_double_ex(user_siginfo, "stime",  sizeof("stime")-1, 
siginfo.si_stime);
 # endif
-				add_assoc_long_ex(user_siginfo,   "pid",    sizeof("pid"),   
siginfo.si_pid);
-				add_assoc_long_ex(user_siginfo,   "uid",    sizeof("uid"),   
siginfo.si_uid);
+				add_assoc_long_ex(user_siginfo,   "pid",    sizeof("pid")-1,   
siginfo.si_pid);
+				add_assoc_long_ex(user_siginfo,   "uid",    sizeof("uid")-1,   
siginfo.si_uid);
 				break;
 #endif
 			case SIGILL:
 			case SIGFPE:
 			case SIGSEGV:
 			case SIGBUS:
-				add_assoc_double_ex(user_siginfo, "addr", sizeof("addr"),
(long)siginfo.si_addr);
+				add_assoc_double_ex(user_siginfo, "addr", sizeof("addr")-1,
(long)siginfo.si_addr);
 				break;
 #ifdef SIGPOLL
 			case SIGPOLL:
-				add_assoc_long_ex(user_siginfo, "band", sizeof("band"), siginfo.si_band);
+				add_assoc_long_ex(user_siginfo, "band", sizeof("band")-1, siginfo.si_band);
 # ifdef si_fd
-				add_assoc_long_ex(user_siginfo, "fd",   sizeof("fd"),   siginfo.si_fd);
+				add_assoc_long_ex(user_siginfo, "fd",   sizeof("fd")-1,   siginfo.si_fd);
 # endif
 				break;
 #endif



Thread (1 message)

  • Dmitry Stogov
« previous php.cvs (#78135) next »