summaryrefslogtreecommitdiff
path: root/ext/standard/pack.c
diff options
context:
space:
mode:
authorOndřej Surý <ondrej@sury.org>2010-10-21 08:52:46 +0200
committerOndřej Surý <ondrej@sury.org>2010-10-21 08:52:46 +0200
commit01fcdff3849c3691d9aaeaab735846ab6d8895ca (patch)
tree6460876d356113fa7053df36f2aa00baa7db24a9 /ext/standard/pack.c
parent855a09f4eded707941180c9d90acd17c25e29447 (diff)
downloadphp-upstream/5.3.3.tar.gz
Imported Upstream version 5.3.3upstream/5.3.3
Diffstat (limited to 'ext/standard/pack.c')
-rw-r--r--ext/standard/pack.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/ext/standard/pack.c b/ext/standard/pack.c
index 0723ece75..602d298e4 100644
--- a/ext/standard/pack.c
+++ b/ext/standard/pack.c
@@ -15,7 +15,7 @@
| Author: Chris Schneider <cschneid@relog.ch> |
+----------------------------------------------------------------------+
*/
-/* $Id: pack.c 293036 2010-01-03 09:23:27Z sebastian $ */
+/* $Id: pack.c 299279 2010-05-12 11:04:57Z dmitry $ */
#include "php.h"
@@ -121,6 +121,9 @@ PHP_FUNCTION(pack)
return;
}
+ if (Z_ISREF_PP(argv[0])) {
+ SEPARATE_ZVAL(argv[0]);
+ }
convert_to_string_ex(argv[0]);
format = Z_STRVAL_PP(argv[0]);
@@ -179,6 +182,9 @@ PHP_FUNCTION(pack)
}
if (arg < 0) {
+ if (Z_ISREF_PP(argv[currentarg])) {
+ SEPARATE_ZVAL(argv[currentarg]);
+ }
convert_to_string_ex(argv[currentarg]);
arg = Z_STRLEN_PP(argv[currentarg]);
}
@@ -312,6 +318,9 @@ PHP_FUNCTION(pack)
case 'A':
memset(&output[outputpos], (code == 'a') ? '\0' : ' ', arg);
val = argv[currentarg++];
+ if (Z_ISREF_PP(val)) {
+ SEPARATE_ZVAL(val);
+ }
convert_to_string_ex(val);
memcpy(&output[outputpos], Z_STRVAL_PP(val),
(Z_STRLEN_PP(val) < arg) ? Z_STRLEN_PP(val) : arg);
@@ -325,6 +334,9 @@ PHP_FUNCTION(pack)
char *v;
val = argv[currentarg++];
+ if (Z_ISREF_PP(val)) {
+ SEPARATE_ZVAL(val);
+ }
convert_to_string_ex(val);
v = Z_STRVAL_PP(val);
outputpos--;