From: Stanislav Malyshev Date: Sun, 10 Sep 2000 13:47:51 +0000 (+0000) Subject: Make unpack("H") work like in Perl X-Git-Tag: php-4.0.3RC1~203 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e8f3025373e69a08eeafb861a92adcb1ba0919bf;p=php Make unpack("H") work like in Perl --- diff --git a/ext/standard/pack.c b/ext/standard/pack.c index 7afe52a6af..70b293f745 100644 --- a/ext/standard/pack.c +++ b/ext/standard/pack.c @@ -551,12 +551,18 @@ PHP_FUNCTION(unpack) break; } - case 'a': case 'A': case 'h': case 'H': { + case 'a': case 'A': { size = arg; arg = 1; break; } + case 'h': case 'H': { + size = arg/2; + arg = 1; + break; + } + /* Use 1 byte of input */ case 'c': case 'C': case 'x': { size = 1; @@ -638,11 +644,10 @@ PHP_FUNCTION(unpack) int ipos, opos; /* If size was given take minimum of len and size */ - if ((size >= 0) && (len > size)) { - len = size; - } - - size = (len + 1) / 2; + if ((size >= 0) && (len > size*2)) { + len = size*2; + } + buf = emalloc(len + 1); for (ipos = opos = 0; opos < len; opos++) {