summaryrefslogtreecommitdiff
path: root/main/main.c
diff options
context:
space:
mode:
authorMarcus Boerger <helly@php.net>2002-06-23 00:57:01 +0000
committerMarcus Boerger <helly@php.net>2002-06-23 00:57:01 +0000
commit761e234a43f16fe1ad387143b9673ee442c3f83c (patch)
tree9f8639a67e5910437ef7797292947f82606335d5 /main/main.c
parent1f56d4ba08b70e33c0a174d6352c88c22e91127f (diff)
downloadphp-git-761e234a43f16fe1ad387143b9673ee442c3f83c.tar.gz
-unlimited php_printf
Diffstat (limited to 'main/main.c')
-rw-r--r--main/main.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/main/main.c b/main/main.c
index b6fe7bfd6e..7d0b3ec0f2 100644
--- a/main/main.c
+++ b/main/main.c
@@ -362,16 +362,19 @@ PHPAPI int php_printf(const char *format, ...)
{
va_list args;
int ret;
- char buffer[PRINTF_BUFFER_SIZE];
+ char *buffer;
int size;
TSRMLS_FETCH();
va_start(args, format);
- size = vsnprintf(buffer, sizeof(buffer), format, args);
- if(size > sizeof(buffer) - 1) {
- size = sizeof(buffer) - 1;
+ size = vspprintf(&buffer, 0, format, args);
+ if (buffer) {
+ ret = PHPWRITE(buffer, size);
+ efree(buffer);
+ } else {
+ php_error(E_ERROR, "Out of memory");
+ ret = 0;
}
- ret = PHPWRITE(buffer, size);
va_end(args);
return ret;