diff options
Diffstat (limited to 'ext/standard/var.c')
-rw-r--r-- | ext/standard/var.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/ext/standard/var.c b/ext/standard/var.c index 06f45c0c73..66150c7274 100644 --- a/ext/standard/var.c +++ b/ext/standard/var.c @@ -487,6 +487,13 @@ again: smart_str_appendl(buf, "NULL", 4); break; case IS_LONG: + /* INT_MIN as a literal will be parsed as a float. Emit something like + * -9223372036854775807-1 to avoid this. */ + if (Z_LVAL_P(struc) == ZEND_LONG_MIN) { + smart_str_append_long(buf, ZEND_LONG_MIN+1); + smart_str_appends(buf, "-1"); + break; + } smart_str_append_long(buf, Z_LVAL_P(struc)); break; case IS_DOUBLE: |