projects
/
m6w6
/
ext-psi
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
dump fixes
[m6w6/ext-psi]
/
src
/
marshal.h
diff --git
a/src/marshal.h
b/src/marshal.h
index a7777d3063cddb18b0d7f7797cd927329aaa3a3f..9880f522f5f975b7b7e0e701687627d654eed0f8 100644
(file)
--- a/
src/marshal.h
+++ b/
src/marshal.h
@@
-72,9
+72,19
@@
static inline char *psi_i128_to_buf(char *buf, __int128 i128)
} else if (V >= -(1L<<52) && V <= (1L<<53)) { \
ZVAL_DOUBLE(z, V); \
} else if (V < ZEND_LONG_MIN || V > ZEND_LONG_MAX) { \
} else if (V >= -(1L<<52) && V <= (1L<<53)) { \
ZVAL_DOUBLE(z, V); \
} else if (V < ZEND_LONG_MIN || V > ZEND_LONG_MAX) { \
- ZVAL_STRING(z, psi_i128_to_buf(&buf[sizeof(buf) - 1], V)); \
+ char *str = psi_i128_to_buf(&buf[sizeof(buf) - 1], V); \
+ if (persistent) { \
+ ZVAL_PSTRING(z, str); \
+ } else { \
+ ZVAL_STRING(z, str); \
+ } \
} else { \
} else { \
- ZVAL_STRING(z, zend_print_long_to_buf(&buf[sizeof(buf) - 1], V)); \
+ char *str = zend_print_long_to_buf(&buf[sizeof(buf) - 1], V); \
+ if (persistent) { \
+ ZVAL_PSTRING(z, str); \
+ } else { \
+ ZVAL_STRING(z, str); \
+ } \
} \
} else { \
if (V <= ZEND_LONG_MAX) { \
} \
} else { \
if (V <= ZEND_LONG_MAX) { \
@@
-82,9
+92,19
@@
static inline char *psi_i128_to_buf(char *buf, __int128 i128)
} else if (V <= (1L<<53)) { \
ZVAL_DOUBLE(z, V); \
} else if (V > ZEND_ULONG_MAX) { \
} else if (V <= (1L<<53)) { \
ZVAL_DOUBLE(z, V); \
} else if (V > ZEND_ULONG_MAX) { \
- ZVAL_STRING(z, psi_u128_to_buf(&buf[sizeof(buf) - 1], V)); \
+ char *str = psi_u128_to_buf(&buf[sizeof(buf) - 1], V); \
+ if (persistent) { \
+ ZVAL_PSTRING(z, str); \
+ } else { \
+ ZVAL_STRING(z, str); \
+ } \
} else { \
} else { \
- ZVAL_STRING(z, zend_print_ulong_to_buf(&buf[sizeof(buf) - 1], V)); \
+ char *str = zend_print_ulong_to_buf(&buf[sizeof(buf) - 1], V); \
+ if (persistent) { \
+ ZVAL_PSTRING(z, str); \
+ } else { \
+ ZVAL_STRING(z, str); \
+ } \
} \
} \
} while (0)
} \
} \
} while (0)