]> granicus.if.org Git - php/commitdiff
* Add struct name to all typedef's so that they can be debugged with MSVC
authorZeev Suraski <zeev@php.net>
Sat, 22 May 1999 16:10:51 +0000 (16:10 +0000)
committerZeev Suraski <zeev@php.net>
Sat, 22 May 1999 16:10:51 +0000 (16:10 +0000)
* Fix an AiCount bug - list(...) = $var was using $var multiple times, and thus
causing AiCount to be decreased multiple times even though it was increased only
once for $var.  Mark all FETCH_DIM's so that they won't decrease AiCount, and only
decrease AiCount on the last FETCH_DIM.
* Fix a stupid bug - forgot to pass CLS_C to some compiler function.  For some reason
MSVC doesn't report these :I

17 files changed:
Zend/zend-parser.y
Zend/zend-scanner.h
Zend/zend.h
Zend/zend_alloc.c
Zend/zend_alloc.h
Zend/zend_compile.c
Zend/zend_compile.h
Zend/zend_constants.h
Zend/zend_execute.c
Zend/zend_execute.h
Zend/zend_execute_API.c
Zend/zend_extensions.h
Zend/zend_highlight.h
Zend/zend_list.h
Zend/zend_llist.h
Zend/zend_ptr_stack.h
Zend/zend_stack.h

index 7d338c97e298c3f6bf4d8d9d9f24834be0beb1ac..2e285ff734e7548cb522ef92ee7328432bceb7bf 100644 (file)
@@ -362,7 +362,7 @@ for_expr:
 
 
 expr_without_variable: 
-               T_LIST '(' { do_list_init(); } assignment_list ')' '=' expr { do_list_end(&$$, &$7 CLS_CC); }
+               T_LIST '(' { do_list_init(CLS_C); } assignment_list ')' '=' expr { do_list_end(&$$, &$7 CLS_CC); }
        |       w_cvar '=' expr         { do_assign(&$$, &$1, &$3 CLS_CC); }
        |       w_cvar '=' '&' w_cvar   { do_assign_ref(&$$, &$1, &$4 CLS_CC); }
        |       w_cvar '=' T_NEW class_name { do_extended_fcall_begin(CLS_C); do_begin_new_object(&$2, &$1, &$3, &$4 CLS_CC); } ctor_arguments { do_end_new_object(&$4, &$3, &$6 CLS_CC); do_extended_fcall_end(CLS_C);  $$ = $2;}
index bdc1ee9f066df1bb8ea9fb10d33422e0c85e06c1..283862c07e9eb0f19ffa05c4aaf9bbfc1b7dd608 100644 (file)
@@ -30,7 +30,7 @@ public:
 
 
 #ifndef ZTS
-typedef struct {
+typedef struct _zend_lex_state {
        YY_BUFFER_STATE buffer_state;
        int state;
        uint return_offset;
@@ -39,7 +39,7 @@ typedef struct {
        char *filename;
 } zend_lex_state;
 #else
-typedef struct {
+typedef struct _zend_lex_state {
        ZendFlexLexer *ZFL;
        istream *input_file;
 } zend_lex_state;
index 4318c5dd214e05c8a3f24d8c778a7e491b7e79a9..a0e375e53b4c21ad7303892ee697233789d6ceec 100644 (file)
@@ -65,7 +65,7 @@
 typedef struct _zval_struct zval;
 typedef struct _zend_class_entry zend_class_entry;
 
-typedef union {
+typedef union _zvalue_value {
        long lval;                                      /* long value */
        double dval;                            /* double value */
        struct {
@@ -91,14 +91,14 @@ struct _zval_struct {
 
 
 
-typedef struct {
+typedef struct _zend_function_entry {
        char *fname;
        void (*handler)(INTERNAL_FUNCTION_PARAMETERS);
        unsigned char *func_arg_types;
 } zend_function_entry;
 
 
-typedef struct {
+typedef struct _zend_property_reference {
        int type;  /* read, write or r/w */
        zval **object;
        zend_llist elements_list;
@@ -106,7 +106,7 @@ typedef struct {
 
 
 
-typedef struct {
+typedef struct _zend_overloaded_element {
        int type;               /* array offset or object proprety */
        zval element;
 } zend_overloaded_element;
@@ -130,7 +130,7 @@ struct _zend_class_entry {
 
 
 
-typedef struct {
+typedef struct _zend_utility_functions {
        void (*error_function)(int type, const char *format, ...);
        int (*printf_function)(const char *format, ...);
        int (*write_function)(const char *str, uint str_length);
@@ -141,7 +141,7 @@ typedef struct {
 } zend_utility_functions;
 
                
-typedef struct {
+typedef struct _zend_utility_values {
        unsigned char short_tags;
        unsigned char asp_tags;
 } zend_utility_values;
index d54f00608be5c87d0a3753dbecf7c7e3875fb535..917f4949a3f5352447203236fceafb9b66bef8b7 100644 (file)
@@ -357,7 +357,7 @@ ZEND_API void shutdown_memory_manager(int silent, int clean_cache)
                                        /* flush old leak */
                                        if (leak_count>0) {
                                                if (!silent && leak_count>1) {
-                                                       zend_message_dispatcher(ZMSG_MEMORY_LEAK_REPEATED, (void *) leak_count-1);
+                                                       zend_message_dispatcher(ZMSG_MEMORY_LEAK_REPEATED, (void *) (leak_count-1));
                                                }
                                                leak_count=0;
                                                total_bytes=0;
@@ -382,7 +382,7 @@ ZEND_API void shutdown_memory_manager(int silent, int clean_cache)
        }
 #if ZEND_DEBUG
        if (!silent && leak_count>1) {
-               zend_message_dispatcher(ZMSG_MEMORY_LEAK_REPEATED, (void *) leak_count-1);
+               zend_message_dispatcher(ZMSG_MEMORY_LEAK_REPEATED, (void *) (leak_count-1));
        }
 #endif
 }
index 161c4685f408ed86772097e4012025ba75aaebad..2c3b074cdd2d21cf795ae7b0ff65f2c43736c0ce 100644 (file)
@@ -37,7 +37,7 @@ typedef struct _mem_header {
        unsigned int cached:1;
 } mem_header;
 
-typedef union {
+typedef union _align_test {
        void *ptr;
        double dbl;
        long lng;
index f13d3b07d1be7fb58bac4095d8871432c84df559..5224033258be054022d6c436d68dd9947f42f16a 100644 (file)
@@ -216,6 +216,7 @@ void fetch_array_dim(znode *result, znode *parent, znode *dim CLS_DC)
        opline->result.u.var = get_temporary_variable(CG(active_op_array));
        opline->op1 = *parent;
        opline->op2 = *dim;
+       opline->extended_value = ZEND_FETCH_STANDARD;
        *result = opline->result;
 
        zend_stack_top(&CG(bp_stack), (void **) &fetch_list_ptr);
@@ -1435,7 +1436,7 @@ void do_add_list_element(znode *element CLS_DC)
 {
        list_llist_element lle;
 
-       if(element) {
+       if (element) {
                lle.var = *element;
                zend_llist_copy(&lle.dimensions, &CG(dimension_llist));
                zend_llist_add_element(&CG(list_llist), &lle);
@@ -1453,7 +1454,6 @@ void do_new_list_begin(CLS_D)
 
 void do_new_list_end(CLS_D)
 {
-
        zend_llist_remove_tail(&CG(dimension_llist));
        (*((int *)CG(dimension_llist).tail->data))++;
 }
@@ -1503,6 +1503,11 @@ void do_list_end(znode *result, znode *expr CLS_DC)
                        opline->op2.u.constant.value.lval = *((int *) dimension->data);
                        opline->op2.u.constant.refcount = 1;
                        opline->op2.u.constant.is_ref = 0;
+                       if (le == CG(list_llist).tail) {
+                               opline->extended_value = ZEND_FETCH_STANDARD;
+                       } else {
+                               opline->extended_value = ZEND_FETCH_NO_AI_COUNT;
+                       }
                        last_container = opline->result;
                        dimension = dimension->next;
                }
@@ -1682,6 +1687,7 @@ void do_foreach_cont(znode *value, znode *key, znode *as_token CLS_DC)
        opline->op2.op_type = IS_CONST;
        opline->op2.u.constant.type = IS_LONG;
        opline->op2.u.constant.value.lval = 0;
+       opline->extended_value = ZEND_FETCH_STANDARD; /* ignored in fetch_dim_tmp_var, but what the hell. */
        result_value = opline->result;
 
        if (key->op_type != IS_UNUSED) {
@@ -1694,6 +1700,7 @@ void do_foreach_cont(znode *value, znode *key, znode *as_token CLS_DC)
                opline->op2.op_type = IS_CONST;
                opline->op2.u.constant.type = IS_LONG;
                opline->op2.u.constant.value.lval = 1;
+               opline->extended_value = ZEND_FETCH_STANDARD; /* ignored in fetch_dim_tmp_var, but what the hell. */
                result_key = opline->result;
        }
 
index f2ea910f0796ea1a75c42d5fadfe34ca45d65a67..e48acf4f2f8470777e89dcaa50b0acbf4493ba8f 100644 (file)
@@ -51,7 +51,7 @@
 
 typedef struct _zend_op_array zend_op_array;
 
-typedef struct {
+typedef struct _znode {
        int op_type;
        union {
                zval constant;
@@ -78,7 +78,7 @@ typedef struct _zend_op {
 } zend_op;
 
 
-typedef struct {
+typedef struct _zend_brk_cont_element {
        int cont;
        int brk;
        int parent;
@@ -117,7 +117,7 @@ struct _zend_op_array {
 };
 
 
-typedef struct {
+typedef struct _zend_internal_function {
        int type;       /* MUST be the first element of this struct! */
 
        unsigned char *arg_types;               /* MUST be the second element of this struct */
@@ -127,7 +127,7 @@ typedef struct {
 } zend_internal_function;
 
 
-typedef union {
+typedef union _zend_function {
        int type;       /* MUST be the first element of this struct! */
        struct {
                int type;  /* never used */
@@ -146,14 +146,14 @@ typedef struct _zend_function_state {
 } zend_function_state;
 
 
-typedef struct {
+typedef struct _zend_switch_entry {
        znode cond;
        int default_case;
        int control_var;
 } zend_switch_entry;
 
 
-typedef struct {
+typedef struct _list_llist_element {
        znode var;
        zend_llist dimensions;
        znode value;
@@ -532,4 +532,7 @@ int zendlex(znode *zendlval CLS_DC);
 #define ZEND_DECLARE_CLASS             1
 #define ZEND_DECLARE_FUNCTION  2
 
+#define ZEND_FETCH_STANDARD            0
+#define ZEND_FETCH_NO_AI_COUNT 1
+
 #endif /* _COMPILE_H */
index f7c85476f16d191171dd636228bd7549110ef50e..d36ae6ba615eef7ce4530263b94536711d98fff7 100644 (file)
@@ -22,7 +22,7 @@
 #define CONST_CS 0x1                           /* Case Sensitive */
 #define CONST_PERSISTENT 0x2
 
-typedef struct {
+typedef struct _zend_constant {
        zval value;
        int flags;
        char *name;
index 37aa6400a5938142eab82e288e8802962defcfcc..48cd8502558bca3493e54f6bf1358aca614c04a6 100644 (file)
@@ -1041,6 +1041,9 @@ binary_assign_op_addr: {
                                zend_fetch_var_address(&opline->result, &opline->op1, &opline->op2, Ts, BP_VAR_IS ELS_CC);
                                break;
                        case ZEND_FETCH_DIM_R:
+                               if (opline->extended_value == ZEND_FETCH_NO_AI_COUNT) {
+                                       EG(AiCount)++;
+                               }
                                zend_fetch_dimension_address(&opline->result, &opline->op1, &opline->op2, Ts, BP_VAR_R ELS_CC);
                                break;
                        case ZEND_FETCH_DIM_W:
index fc70585b14d310426147942fb2c3209ae5681348..2d88207f73900ac8d9ff5a1b2ed53fab7307fdec 100644 (file)
@@ -20,7 +20,7 @@
 #include "zend_compile.h"
 #include "zend_hash.h"
 
-typedef union {
+typedef union _temp_variable {
        zval tmp_var;
        zval **var;
        struct {
index 526b965906fbb648580981627e3c50d5f0e7d940..9e8b51ec10c34562d2e4a3c2006c335ed8236035 100644 (file)
@@ -37,13 +37,19 @@ static void zend_handle_sigsegv(int dummy)
        fflush(stdout);
        fflush(stderr);
        signal(SIGSEGV, original_sigsegv_handler);
-       fprintf(stderr, "SIGSEGV caught on opcode %d on opline %d of %s() at %s:%d\n\n",
-                       active_opline->opcode,
-                       active_opline-EG(active_op_array)->opcodes,
-                       get_active_function_name(),
-                       zend_get_executed_filename(),
-                       zend_get_executed_lineno());
+       /*
+       {
+               ELS_FETCH();
+
+               fprintf(stderr, "SIGSEGV caught on opcode %d on opline %d of %s() at %s:%d\n\n",
+                               active_opline->opcode,
+                               active_opline-EG(active_op_array)->opcodes,
+                               get_active_function_name(),
+                               zend_get_executed_filename(ELS_C),
+                               zend_get_executed_lineno(ELS_C));
+       }
        original_sigsegv_handler(dummy);
+       */
 }
 
 
index 9c11942bc18aeb23e1adf44d881cc7acd0c73071..7ecb83afed3412046552075c9e96b3850e02e7ed 100644 (file)
@@ -21,7 +21,7 @@
 
 #define ZEND_EXTENSION_API_NO          2
 
-typedef struct {
+typedef struct _zend_extension_version_info {
        int zend_extension_api_no;
        char *required_zend_version;
        unsigned char thread_safe;
index 00b576a1865267b7eea2073252e840bd2402ccad..505022a2df1693e6848e36b3e22a556cbf10155f 100644 (file)
@@ -25,7 +25,7 @@
 #define HL_KEYWORD_COLOR     "#007700"    /* green */
 
 
-typedef struct {
+typedef struct _zend_syntax_highlighter_ini {
        char *highlight_html;
        char *highlight_comment;
        char *highlight_default;
index da9d71bd963f2827dbe69228064d7a7d0226849b..796e1e836ef386a9aaebe0c7b77df6f757fbf58b 100644 (file)
 
 extern HashTable list_destructors;
 
-typedef struct {
+typedef struct _list_entry {
        void *ptr;
        int type;
        int refcount;
 } list_entry;
 
-typedef struct {
+typedef struct _list_destructors_entry {
        void (*list_destructor)(void *);
        void (*plist_destructor)(void *);
        int module_number;
index dd5bedb6bf07af2c38e38f930908157bbd5c911a..d25ff0e7b52030bd0c4e65e378c843456bb1d959 100644 (file)
@@ -25,7 +25,7 @@ typedef struct _zend_llist_element {
        char data[1]; /* Needs to always be last in the struct */
 } zend_llist_element;
 
-typedef struct {
+typedef struct _zend_llist {
        zend_llist_element *head;
        zend_llist_element *tail;
        size_t size;
index 15f59de293c4b3604469ceba277be5388b14975d..ac47b0f7cb1f73e2533b5cb1cffb1fa0ba8b6b20 100644 (file)
@@ -18,7 +18,7 @@
 #ifndef _ZEND_PTR_STACK_H
 #define _ZEND_PTR_STACK_H
 
-typedef struct {
+typedef struct _zend_ptr_stack {
        short top, max;
        void **elements;
        void **top_element;
index abd3652529aaa0b8091715b6416def35ada65b70..55da44c7bf12f101ae9645c068e548ff944f0823 100644 (file)
@@ -17,7 +17,7 @@
 #ifndef _ZEND_STACK_H
 #define _ZEND_STACK_H
 
-typedef struct {
+typedef struct _zend_stack {
        int top, max;
        void **elements;
 } zend_stack;