X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-pq;a=blobdiff_plain;f=src%2Fphp_pqres.c;h=75a608128368cbd459a946f69b23fde4031e4d15;hp=9dda1073fc149af7d014efd28e25f88ff31ce38d;hb=5a5758352bbc42cbe57f32859de831de2ea08a86;hpb=d4ed03032c338c208cb65ac9e435bfe6c287bbc1 diff --git a/src/php_pqres.c b/src/php_pqres.c index 9dda107..75a6081 100644 --- a/src/php_pqres.c +++ b/src/php_pqres.c @@ -126,10 +126,9 @@ zval *php_pqres_typed_zval(php_pqres_t *res, char *val, size_t len, Oid typ TSRM } ZVAL_BOOL(zv, *val == 't'); break; -#if SIZEOF_LONG >= 8 + case PHP_PQ_OID_INT8: case PHP_PQ_OID_TID: -#endif case PHP_PQ_OID_INT4: case PHP_PQ_OID_INT2: case PHP_PQ_OID_XID: @@ -137,7 +136,21 @@ zval *php_pqres_typed_zval(php_pqres_t *res, char *val, size_t len, Oid typ TSRM if (!(res->auto_convert & PHP_PQRES_CONV_INT)) { goto noconversion; } - ZVAL_LONG(zv, zend_atol(val, len)); + { + long lval; + double dval; + + switch (is_numeric_string(val, len, &lval, &dval, 0)) { + case IS_LONG: + ZVAL_LONG(zv, lval); + break; + case IS_DOUBLE: + ZVAL_DOUBLE(zv, dval); + break; + default: + goto noconversion; + } + } break; case PHP_PQ_OID_FLOAT4: