--- main/php_variables.c.orig	Tue Aug 17 19:12:13 2004
+++ main/php_variables.c	Tue Aug 17 19:15:16 2004
@@ -117,8 +117,9 @@
 	index_len = var_len;
 
 	while (1) {
+		char *escaped_index = NULL;
 		if (is_array) {
-			char *escaped_index = NULL, *index_s;
+			char *index_s;
 			int new_idx_len = 0;
 
 			ip++;
@@ -182,9 +183,15 @@
 			if (!index) {
 				zend_hash_next_index_insert(symtable1, &gpc_element, sizeof(zval *), (void **) &gpc_element_p);
 			} else {
-				char *escaped_index = php_addslashes(index, index_len, &index_len, 0 TSRMLS_CC);
+				if (PG(magic_quotes_gpc)) {
+					escaped_index = php_addslashes(index, index_len, &index_len, 0 TSRMLS_CC);
+				} else {
+					escaped_index = index;
+				}
 				zend_symtable_update(symtable1, escaped_index, index_len+1, &gpc_element, sizeof(zval *), (void **) &gpc_element_p);
-				efree(escaped_index);
+				if (index!=escaped_index) {
+					efree(escaped_index);
+				}
 			}
 			break;
 		}
