]> granicus.if.org Git - php/commitdiff
- Ensure that stderr output are not buffered, portability for tests
authorPierre Joye <pajoye@php.net>
Mon, 25 Jan 2010 14:47:19 +0000 (14:47 +0000)
committerPierre Joye <pajoye@php.net>
Mon, 25 Jan 2010 14:47:19 +0000 (14:47 +0000)
Zend/zend_alloc.c
Zend/zend_execute.c
Zend/zend_execute_API.c
Zend/zend_extensions.c

index 8480668f0fcb53138af9cbd43544632d87bb7127..2ac07478f50bcd9bb17c1865af54b474d64bc8ed 100644 (file)
@@ -85,6 +85,10 @@ static void zend_mm_panic(const char *message) __attribute__ ((noreturn));
 static void zend_mm_panic(const char *message) /* {{{ */
 {
        fprintf(stderr, "%s\n", message);
+/* See http://support.microsoft.com/kb/190351 */
+#ifdef PHP_WIN32
+       fflush(stderr);
+#endif
 #if ZEND_DEBUG && defined(HAVE_KILL) && defined(HAVE_GETPID)
        kill(getpid(), SIGSEGV);
 #endif
@@ -1058,11 +1062,19 @@ ZEND_API zend_mm_heap *zend_mm_startup_ex(const zend_mm_mem_handlers *handlers,
 
        if (zend_mm_low_bit(block_size) != zend_mm_high_bit(block_size)) {
                fprintf(stderr, "'block_size' must be a power of two\n");
+/* See http://support.microsoft.com/kb/190351 */
+#ifdef PHP_WIN32
+               fflush(stderr);
+#endif
                exit(255);
        }
        storage = handlers->init(params);
        if (!storage) {
                fprintf(stderr, "Cannot initialize zend_mm storage [%s]\n", handlers->name);
+/* See http://support.microsoft.com/kb/190351 */
+#ifdef PHP_WIN32
+               fflush(stderr);
+#endif
                exit(255);
        }
        storage->handlers = handlers;
@@ -1146,9 +1158,17 @@ ZEND_API zend_mm_heap *zend_mm_startup(void) /* {{{ */
                if (!mem_handlers[i].name) {
                        fprintf(stderr, "Wrong or unsupported zend_mm storage type '%s'\n", mem_type);
                        fprintf(stderr, "  supported types:\n");
+/* See http://support.microsoft.com/kb/190351 */
+#ifdef PHP_WIN32
+                       fflush(stderr);
+#endif
                        for (i = 0; mem_handlers[i].name; i++) {
                                fprintf(stderr, "    '%s'\n", mem_handlers[i].name);
                        }
+/* See http://support.microsoft.com/kb/190351 */
+#ifdef PHP_WIN32
+                       fflush(stderr);
+#endif
                        exit(255);
                }
        }
@@ -1159,9 +1179,17 @@ ZEND_API zend_mm_heap *zend_mm_startup(void) /* {{{ */
                seg_size = zend_atoi(tmp, 0);
                if (zend_mm_low_bit(seg_size) != zend_mm_high_bit(seg_size)) {
                        fprintf(stderr, "ZEND_MM_SEG_SIZE must be a power of two\n");
+/* See http://support.microsoft.com/kb/190351 */
+#ifdef PHP_WIN32
+                       fflush(stderr);
+#endif
                        exit(255);
                } else if (seg_size < ZEND_MM_ALIGNED_SEGMENT_SIZE + ZEND_MM_ALIGNED_HEADER_SIZE) {
                        fprintf(stderr, "ZEND_MM_SEG_SIZE is too small\n");
+/* See http://support.microsoft.com/kb/190351 */
+#ifdef PHP_WIN32
+                       fflush(stderr);
+#endif
                        exit(255);
                }
        } else {
@@ -1706,6 +1734,10 @@ static void zend_mm_safe_error(zend_mm_heap *heap,
                                        size);
                                fprintf(stderr, " in %s on line %d\n", error_filename, error_lineno);
                        }
+/* See http://support.microsoft.com/kb/190351 */
+#ifdef PHP_WIN32
+                       fflush(stderr);
+#endif
                } zend_end_try();
        } else {
                heap->overflow = 2;
index 6c0664ced4e9a306ae656458e429e6849f6f7cba..e02feef7ec3519064e1b01f5cb5e832c2947960b 100644 (file)
@@ -1341,6 +1341,10 @@ static int zend_check_symbol(zval **pz TSRMLS_DC) /* {{{ */
 {
        if (Z_TYPE_PP(pz) > 9) {
                fprintf(stderr, "Warning!  %x has invalid type!\n", *pz);
+/* See http://support.microsoft.com/kb/190351 */
+#ifdef PHP_WIN32
+               fflush(stderr);
+#endif
        } else if (Z_TYPE_PP(pz) == IS_ARRAY) {
                zend_hash_apply(Z_ARRVAL_PP(pz), (apply_func_t) zend_check_symbol TSRMLS_CC);
        } else if (Z_TYPE_PP(pz) == IS_OBJECT) {
index bfd28edc7e179cf50ea10f57571080cca1f30509..c7a5928778ea26d1f12d085361c4c365f077b9be 100644 (file)
@@ -85,6 +85,10 @@ static void zend_handle_sigsegv(int dummy) /* {{{ */
                                get_active_function_name(TSRMLS_C).s,
                                zend_get_executed_filename(TSRMLS_C),
                                zend_get_executed_lineno(TSRMLS_C));
+/* See http://support.microsoft.com/kb/190351 */
+#ifdef PHP_WIN32
+               fflush(stderr);
+#endif
        }
        if (original_sigsegv_handler!=zend_handle_sigsegv) {
                original_sigsegv_handler(dummy);
index a88a34d1f262e2f7d0c79289dd8e46d4bcc6fce5..c9802d2afc0604b9d16daded1ebef88e77d03449 100644 (file)
@@ -35,6 +35,10 @@ int zend_load_extension(const char *path) /* {{{ */
        if (!handle) {
 #ifndef ZEND_WIN32
                fprintf(stderr, "Failed loading %s:  %s\n", path, DL_ERROR());
+/* See http://support.microsoft.com/kb/190351 */
+#ifdef PHP_WIN32
+               fflush(stderr);
+#endif
 #else
                fprintf(stderr, "Failed loading %s\n", path);
 #endif
@@ -51,6 +55,10 @@ int zend_load_extension(const char *path) /* {{{ */
        }
        if (!extension_version_info || !new_extension) {
                fprintf(stderr, "%s doesn't appear to be a valid Zend extension\n", path);
+/* See http://support.microsoft.com/kb/190351 */
+#ifdef PHP_WIN32
+               fflush(stderr);
+#endif
                DL_UNLOAD(handle);
                return FAILURE;
        }
@@ -64,6 +72,10 @@ int zend_load_extension(const char *path) /* {{{ */
                                        new_extension->name,
                                        extension_version_info->zend_extension_api_no,
                                        ZEND_EXTENSION_API_NO);
+/* See http://support.microsoft.com/kb/190351 */
+#ifdef PHP_WIN32
+                       fflush(stderr);
+#endif
                        DL_UNLOAD(handle);
                        return FAILURE;
                } else if (extension_version_info->zend_extension_api_no < ZEND_EXTENSION_API_NO) {
@@ -76,6 +88,10 @@ int zend_load_extension(const char *path) /* {{{ */
                                        new_extension->author,
                                        new_extension->URL,
                                        new_extension->name);
+/* See http://support.microsoft.com/kb/190351 */
+#ifdef PHP_WIN32
+                       fflush(stderr);
+#endif
                        DL_UNLOAD(handle);
                        return FAILURE;
                }
@@ -83,6 +99,10 @@ int zend_load_extension(const char *path) /* {{{ */
                   (!new_extension->build_id_check || new_extension->build_id_check(ZEND_EXTENSION_BUILD_ID) != SUCCESS)) {
                fprintf(stderr, "Cannot load %s - it was built with configuration %s, whereas running engine is %s\n",
                                        new_extension->name, extension_version_info->build_id, ZEND_EXTENSION_BUILD_ID);
+/* See http://support.microsoft.com/kb/190351 */
+#ifdef PHP_WIN32
+               fflush(stderr);
+#endif
                DL_UNLOAD(handle);
                return FAILURE;
        }
@@ -90,6 +110,10 @@ int zend_load_extension(const char *path) /* {{{ */
        return zend_register_extension(new_extension, handle);
 #else
        fprintf(stderr, "Extensions are not supported on this platform.\n");
+/* See http://support.microsoft.com/kb/190351 */
+#ifdef PHP_WIN32
+       fflush(stderr);
+#endif
        return FAILURE;
 #endif
 }