diff --git a/Lib/php/php.swg b/Lib/php/php.swg index bf388a75a..ffcffde70 100644 --- a/Lib/php/php.swg +++ b/Lib/php/php.swg @@ -240,9 +240,7 @@ if ((long long)LONG_MIN <= $1 && $1 <= (long long)LONG_MAX) { RETVAL_LONG((long)($1)); } else { - char temp[256]; - sprintf(temp, "%lld", (long long)$1); - RETVAL_STRING(temp); + RETVAL_NEW_STR(zend_strpprintf(0, "%lld", (long long)$1)); } %} %typemap(out, phptype="int|string") unsigned long long @@ -250,9 +248,7 @@ if ($1 <= (unsigned long long)LONG_MAX) { RETVAL_LONG((long)($1)); } else { - char temp[256]; - sprintf(temp, "%llu", (unsigned long long)$1); - RETVAL_STRING(temp); + RETVAL_NEW_STR(zend_strpprintf(0, "%llu", (unsigned long long)$1)); } %} @@ -286,9 +282,7 @@ if ((long long)LONG_MIN <= *$1 && *$1 <= (long long)LONG_MAX) { RETVAL_LONG((long)(*$1)); } else { - char temp[256]; - sprintf(temp, "%lld", (long long)(*$1)); - RETVAL_STRING(temp); + RETVAL_NEW_STR(zend_strpprintf(0, "%lld", (long long)(*$1))); } %} %typemap(out, phptype="int|string") const unsigned long long & @@ -296,9 +290,7 @@ if (*$1 <= (unsigned long long)LONG_MAX) { RETVAL_LONG((long)(*$1)); } else { - char temp[256]; - sprintf(temp, "%llu", (unsigned long long)(*$1)); - RETVAL_STRING(temp); + RETVAL_NEW_STR(zend_strpprintf(0, "%llu", (unsigned long long)(*$1))); } %} diff --git a/Lib/php/typemaps.i b/Lib/php/typemaps.i index 321b1202c..2f7819097 100644 --- a/Lib/php/typemaps.i +++ b/Lib/php/typemaps.i @@ -122,9 +122,7 @@ INT_TYPEMAP(long long); if ((long long)LONG_MIN <= temp$argnum && temp$argnum <= (long long)LONG_MAX) { ZVAL_LONG(&o, (long)temp$argnum); } else { - char temp[256]; - sprintf(temp, "%lld", (long long)temp$argnum); - ZVAL_STRING(&o, temp); + ZVAL_NEW_STR(&o, zend_strpprintf(0, "%lld", (long long)temp$argnum)); } t_output_helper($result, &o); } @@ -138,9 +136,7 @@ INT_TYPEMAP(long long); if ((long long)LONG_MIN <= lvalue$argnum && lvalue$argnum <= (long long)LONG_MAX) { ZVAL_LONG(&$arg, (long)temp$argnum); } else { - char temp[256]; - sprintf(temp, "%lld", (long long)lvalue$argnum); - ZVAL_STRING(&$arg, temp); + ZVAL_NEW_STR(&$arg, zend_strpprintf(0, "%lld", (long long)lvalue$argnum)); } %} %typemap(argout) long long &OUTPUT @@ -148,9 +144,7 @@ INT_TYPEMAP(long long); if ((long long)LONG_MIN <= *arg$argnum && *arg$argnum <= (long long)LONG_MAX) { ZVAL_LONG($result, (long)(*arg$argnum)); } else { - char temp[256]; - sprintf(temp, "%lld", (long long)(*arg$argnum)); - ZVAL_STRING($result, temp); + ZVAL_NEW_STR($result, zend_strpprintf(0, "%lld", (long long)(*arg$argnum))); } %} @@ -161,9 +155,7 @@ INT_TYPEMAP(unsigned long long); if (temp$argnum <= (unsigned long long)LONG_MAX) { ZVAL_LONG(&o, temp$argnum); } else { - char temp[256]; - sprintf(temp, "%llu", (unsigned long long)temp$argnum); - ZVAL_STRING(&o, temp); + ZVAL_NEW_STR(&o, zend_strpprintf(0, "%llu", (unsigned long long)temp$argnum)); } t_output_helper($result, &o); } @@ -177,9 +169,7 @@ INT_TYPEMAP(unsigned long long); if (lvalue$argnum <= (unsigned long long)LONG_MAX) { ZVAL_LONG($arg, (long)(lvalue$argnum)); } else { - char temp[256]; - sprintf(temp, "%llu", (unsigned long long)lvalue$argnum); - ZVAL_STRING((*$arg), temp); + ZVAL_NEW_STR((*$arg), zend_strpprintf(0, "%llu", (unsigned long long)lvalue$argnum)); } %} %typemap(argout) unsigned long long &OUTPUT @@ -187,9 +177,7 @@ INT_TYPEMAP(unsigned long long); if (*arg$argnum <= (unsigned long long)LONG_MAX) { ZVAL_LONG($result, (long)(*arg$argnum)); } else { - char temp[256]; - sprintf(temp, "%llu", (unsigned long long)(*arg$argnum)); - ZVAL_STRING($result, temp); + ZVAL_NEW_STR($result, zend_strpprintf(0, "%llu", (unsigned long long)(*arg$argnum))); } %} diff --git a/Source/Modules/php.cxx b/Source/Modules/php.cxx index 72a2508f1..56152712d 100644 --- a/Source/Modules/php.cxx +++ b/Source/Modules/php.cxx @@ -151,14 +151,12 @@ static void SwigPHP_emit_pointer_type_registrations() { Printf(s_wrappers, "static int swig_ptr_cast_object(zend_object *zobj, zval *retval, int type) {\n"); Append(s_wrappers, "#endif\n"); Printf(s_wrappers, " if (type == IS_STRING) {\n"); - Printf(s_wrappers, " char buf[80];\n"); Append(s_wrappers, "#if PHP_MAJOR_VERSION < 8\n"); Printf(s_wrappers, " swig_object_wrapper *obj = SWIG_Z_FETCH_OBJ_P(z);\n"); Append(s_wrappers, "#else\n"); Printf(s_wrappers, " swig_object_wrapper *obj = swig_php_fetch_object(zobj);\n"); Append(s_wrappers, "#endif\n"); - Printv(s_wrappers, " sprintf(buf, \"SWIGPointer(%p,owned=%d)\", obj->ptr, obj->newobject);\n", NIL); - Printf(s_wrappers, " ZVAL_STRING(retval, buf);\n"); + Printv(s_wrappers, " ZVAL_NEW_STR(retval, zend_strpprintf(0, \"SWIGPointer(%p,owned=%d)\", obj->ptr, obj->newobject));\n", NIL); Printf(s_wrappers, " return SUCCESS;\n"); Printf(s_wrappers, " }\n"); Printf(s_wrappers, " return FAILURE;\n");