diff options
| author | Stanislav Malyshev <stas@php.net> | 2001-08-20 15:28:53 +0000 |
|---|---|---|
| committer | Stanislav Malyshev <stas@php.net> | 2001-08-20 15:28:53 +0000 |
| commit | bd5d7bba59a7c7f9916e85c16e519243ea0ef9ea (patch) | |
| tree | 4613596f38c441646696da33f0017cbc3d03cbf4 | |
| parent | b40450118308d8a29a961a1a57eb2b32e42e8681 (diff) | |
| download | php-git-bd5d7bba59a7c7f9916e85c16e519243ea0ef9ea.tar.gz | |
MFH
| -rw-r--r-- | ext/standard/php_smart_str.h | 23 | ||||
| -rw-r--r-- | ext/standard/tests/serialize/001.phpt | 4 |
2 files changed, 18 insertions, 9 deletions
diff --git a/ext/standard/php_smart_str.h b/ext/standard/php_smart_str.h index 167fc1b643..0edaa4a9d4 100644 --- a/ext/standard/php_smart_str.h +++ b/ext/standard/php_smart_str.h @@ -78,27 +78,32 @@ static inline void smart_str_appendl_ex(smart_str *dest, const char *src, size_t static inline char *smart_str_print_long(char *buf, long num) { + /* TBFixed: think how to do it one-pass */ + long tmp; char *p = buf; - long tmp = 0; int n = 0; + + if(num == 0) { + *p++ = '0'; + return p; + } if (num < 0) { num = -num; *p++ = '-'; } + for (tmp = num; tmp > 0; n++) { + tmp /= 10; + } + p += n; + while (num > 0) { - tmp = tmp * 10 + (num % 10); + *(--p) = (num % 10) + '0'; num /= 10; - n++; } - do { - *p++ = (tmp % 10) + '0'; - tmp /= 10; - } while (--n > 0); - - return p; + return p+n; } static inline void smart_str_append_long_ex(smart_str *dest, long num, int type) diff --git a/ext/standard/tests/serialize/001.phpt b/ext/standard/tests/serialize/001.phpt index 78f90ed627..ab8ac99c53 100644 --- a/ext/standard/tests/serialize/001.phpt +++ b/ext/standard/tests/serialize/001.phpt @@ -40,6 +40,8 @@ echo serialize((bool) false)."\n"; echo serialize(1)."\n"; echo serialize(0)."\n"; echo serialize(-1)."\n"; +echo serialize(2147483647)."\n"; +echo serialize(-2147483647)."\n"; echo serialize(1.123456789)."\n"; echo serialize(1.0)."\n"; echo serialize(0.0)."\n"; @@ -75,6 +77,8 @@ b:0; i:1; i:0; i:-1; +i:2147483647; +i:-2147483647; d:1.123456789; d:1; d:0; |
