Skip to content

Commit e6b2283

Browse files
committed
Remove PHAR_(Z)STR* usages
1 parent 39bd738 commit e6b2283

File tree

5 files changed

+33
-120
lines changed

5 files changed

+33
-120
lines changed

ext/phar/dirstream.c

Lines changed: 8 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -94,31 +94,23 @@ static size_t phar_dir_read(php_stream *stream, char *buf, size_t count TSRMLS_D
9494
{
9595
size_t to_read;
9696
HashTable *data = (HashTable *)stream->abstract;
97-
phar_zstr key;
9897
char *str_key;
9998
uint keylen;
10099
ulong unused;
101100

102-
if (FAILURE == zend_hash_has_more_elements(data)) {
101+
if (HASH_KEY_NON_EXISTENT == zend_hash_get_current_key_ex(data, &str_key, &keylen, &unused, 0, NULL)) {
103102
return 0;
104103
}
105104

106-
if (HASH_KEY_NON_EXISTENT == zend_hash_get_current_key_ex(data, &key, &keylen, &unused, 0, NULL)) {
107-
return 0;
108-
}
109-
110-
PHAR_STR(key, str_key);
111105
zend_hash_move_forward(data);
112106
to_read = MIN(keylen, count);
113107

114108
if (to_read == 0 || count < keylen) {
115-
PHAR_STR_FREE(str_key);
116109
return 0;
117110
}
118111

119112
memset(buf, 0, sizeof(php_stream_dirent));
120113
memcpy(((php_stream_dirent *) buf)->d_name, str_key, to_read);
121-
PHAR_STR_FREE(str_key);
122114
((php_stream_dirent *) buf)->d_name[to_read + 1] = '\0';
123115

124116
return sizeof(php_stream_dirent);
@@ -193,13 +185,12 @@ static php_stream *phar_make_dirstream(char *dir, HashTable *manifest TSRMLS_DC)
193185
{
194186
HashTable *data;
195187
int dirlen = strlen(dir);
196-
phar_zstr key;
197188
char *entry, *found, *save, *str_key;
198189
uint keylen;
199190
ulong unused;
200191

201192
ALLOC_HASHTABLE(data);
202-
zend_hash_init(data, 64, zend_get_hash_value, NULL, 0);
193+
zend_hash_init(data, 64, NULL, NULL, 0);
203194

204195
if ((*dir == '/' && dirlen == 1 && (manifest->nNumOfElements == 0)) || (dirlen >= sizeof(".phar")-1 && !memcmp(dir, ".phar", sizeof(".phar")-1))) {
205196
/* make empty root directory for empty phar */
@@ -211,15 +202,12 @@ static php_stream *phar_make_dirstream(char *dir, HashTable *manifest TSRMLS_DC)
211202
zend_hash_internal_pointer_reset(manifest);
212203

213204
while (FAILURE != zend_hash_has_more_elements(manifest)) {
214-
if (HASH_KEY_NON_EXISTENT == zend_hash_get_current_key_ex(manifest, &key, &keylen, &unused, 0, NULL)) {
205+
if (HASH_KEY_NON_EXISTENT == zend_hash_get_current_key_ex(manifest, &str_key, &keylen, &unused, 0, NULL)) {
215206
break;
216207
}
217208

218-
PHAR_STR(key, str_key);
219-
220209
if (keylen <= (uint)dirlen) {
221210
if (keylen < (uint)dirlen || !strncmp(str_key, dir, dirlen)) {
222-
PHAR_STR_FREE(str_key);
223211
if (SUCCESS != zend_hash_move_forward(manifest)) {
224212
break;
225213
}
@@ -230,7 +218,6 @@ static php_stream *phar_make_dirstream(char *dir, HashTable *manifest TSRMLS_DC)
230218
if (*dir == '/') {
231219
/* root directory */
232220
if (keylen >= sizeof(".phar")-1 && !memcmp(str_key, ".phar", sizeof(".phar")-1)) {
233-
PHAR_STR_FREE(str_key);
234221
/* do not add any magic entries to this directory */
235222
if (SUCCESS != zend_hash_move_forward(manifest)) {
236223
break;
@@ -250,19 +237,16 @@ static php_stream *phar_make_dirstream(char *dir, HashTable *manifest TSRMLS_DC)
250237
entry[keylen] = '\0';
251238
}
252239

253-
PHAR_STR_FREE(str_key);
254240
goto PHAR_ADD_ENTRY;
255241
} else {
256242
if (0 != memcmp(str_key, dir, dirlen)) {
257243
/* entry in directory not found */
258-
PHAR_STR_FREE(str_key);
259244
if (SUCCESS != zend_hash_move_forward(manifest)) {
260245
break;
261246
}
262247
continue;
263248
} else {
264249
if (str_key[dirlen] != '/') {
265-
PHAR_STR_FREE(str_key);
266250
if (SUCCESS != zend_hash_move_forward(manifest)) {
267251
break;
268252
}
@@ -289,7 +273,6 @@ static php_stream *phar_make_dirstream(char *dir, HashTable *manifest TSRMLS_DC)
289273
entry[keylen - dirlen - 1] = '\0';
290274
keylen = keylen - dirlen - 1;
291275
}
292-
PHAR_STR_FREE(str_key);
293276
PHAR_ADD_ENTRY:
294277
if (keylen) {
295278
phar_add_empty(data, entry, keylen);
@@ -324,7 +307,6 @@ php_stream *phar_wrapper_open_dir(php_stream_wrapper *wrapper, const char *path,
324307
php_url *resource = NULL;
325308
php_stream *ret;
326309
char *internal_file, *error, *str_key;
327-
phar_zstr key;
328310
uint keylen;
329311
ulong unused;
330312
phar_archive_data *phar;
@@ -405,17 +387,14 @@ php_stream *phar_wrapper_open_dir(php_stream_wrapper *wrapper, const char *path,
405387
while (FAILURE != zend_hash_has_more_elements(&phar->manifest)) {
406388
if (HASH_KEY_NON_EXISTENT !=
407389
zend_hash_get_current_key_ex(
408-
&phar->manifest, &key, &keylen, &unused, 0, NULL)) {
409-
PHAR_STR(key, str_key);
390+
&phar->manifest, &str_key, &keylen, &unused, 0, NULL)) {
410391
if (keylen > (uint)i_len && 0 == memcmp(str_key, internal_file, i_len)) {
411-
PHAR_STR_FREE(str_key);
412392
/* directory found */
413393
internal_file = estrndup(internal_file,
414394
i_len);
415395
php_url_free(resource);
416396
return phar_make_dirstream(internal_file, &phar->manifest TSRMLS_CC);
417397
}
418-
PHAR_STR_FREE(str_key);
419398
}
420399

421400
if (SUCCESS != zend_hash_move_forward(&phar->manifest)) {
@@ -572,7 +551,6 @@ int phar_wrapper_rmdir(php_stream_wrapper *wrapper, const char *url, int options
572551
int arch_len, entry_len;
573552
php_url *resource = NULL;
574553
uint host_len;
575-
phar_zstr key;
576554
char *str_key;
577555
uint key_len;
578556
ulong unused;
@@ -637,15 +615,12 @@ int phar_wrapper_rmdir(php_stream_wrapper *wrapper, const char *url, int options
637615

638616
if (!entry->is_deleted) {
639617
for (zend_hash_internal_pointer_reset(&phar->manifest);
640-
HASH_KEY_NON_EXISTENT != zend_hash_get_current_key_ex(&phar->manifest, &key, &key_len, &unused, 0, NULL);
641-
zend_hash_move_forward(&phar->manifest)) {
642-
643-
PHAR_STR(key, str_key);
644-
618+
HASH_KEY_NON_EXISTENT != zend_hash_get_current_key_ex(&phar->manifest, &str_key, &key_len, &unused, 0, NULL);
619+
zend_hash_move_forward(&phar->manifest)
620+
) {
645621
if (key_len > path_len &&
646622
memcmp(str_key, resource->path+1, path_len) == 0 &&
647623
IS_SLASH(str_key[path_len])) {
648-
PHAR_STR_FREE(str_key);
649624
php_stream_wrapper_log_error(wrapper, options TSRMLS_CC, "phar error: Directory not empty");
650625
if (entry->is_temp_dir) {
651626
efree(entry->filename);
@@ -654,19 +629,15 @@ int phar_wrapper_rmdir(php_stream_wrapper *wrapper, const char *url, int options
654629
php_url_free(resource);
655630
return 0;
656631
}
657-
PHAR_STR_FREE(str_key);
658632
}
659633

660634
for (zend_hash_internal_pointer_reset(&phar->virtual_dirs);
661-
HASH_KEY_NON_EXISTENT != zend_hash_get_current_key_ex(&phar->virtual_dirs, &key, &key_len, &unused, 0, NULL);
635+
HASH_KEY_NON_EXISTENT != zend_hash_get_current_key_ex(&phar->virtual_dirs, &str_key, &key_len, &unused, 0, NULL);
662636
zend_hash_move_forward(&phar->virtual_dirs)) {
663637

664-
PHAR_STR(key, str_key);
665-
666638
if (key_len > path_len &&
667639
memcmp(str_key, resource->path+1, path_len) == 0 &&
668640
IS_SLASH(str_key[path_len])) {
669-
PHAR_STR_FREE(str_key);
670641
php_stream_wrapper_log_error(wrapper, options TSRMLS_CC, "phar error: Directory not empty");
671642
if (entry->is_temp_dir) {
672643
efree(entry->filename);
@@ -675,7 +646,6 @@ int phar_wrapper_rmdir(php_stream_wrapper *wrapper, const char *url, int options
675646
php_url_free(resource);
676647
return 0;
677648
}
678-
PHAR_STR_FREE(str_key);
679649
}
680650
}
681651

ext/phar/phar.c

Lines changed: 8 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1954,67 +1954,45 @@ int phar_detect_phar_fname_ext(const char *filename, int filename_len, const cha
19541954
goto woohoo;
19551955
}
19561956
} else {
1957-
phar_zstr key;
19581957
char *str_key;
19591958
uint keylen;
19601959
ulong unused;
19611960

1962-
zend_hash_internal_pointer_reset(&(PHAR_GLOBALS->phar_fname_map));
1963-
1964-
while (FAILURE != zend_hash_has_more_elements(&(PHAR_GLOBALS->phar_fname_map))) {
1965-
if (HASH_KEY_NON_EXISTENT == zend_hash_get_current_key_ex(&(PHAR_GLOBALS->phar_fname_map), &key, &keylen, &unused, 0, NULL)) {
1966-
break;
1967-
}
1968-
1969-
PHAR_STR(key, str_key);
1970-
1961+
for (zend_hash_internal_pointer_reset(&(PHAR_GLOBALS->phar_fname_map));
1962+
HASH_KEY_NON_EXISTENT != zend_hash_get_current_key_ex(&(PHAR_GLOBALS->phar_fname_map), &str_key, &keylen, &unused, 0, NULL);
1963+
zend_hash_move_forward(&(PHAR_GLOBALS->phar_fname_map))
1964+
) {
19711965
if (keylen > (uint) filename_len) {
1972-
zend_hash_move_forward(&(PHAR_GLOBALS->phar_fname_map));
1973-
PHAR_STR_FREE(str_key);
19741966
continue;
19751967
}
19761968

19771969
if (!memcmp(filename, str_key, keylen) && ((uint)filename_len == keylen
19781970
|| filename[keylen] == '/' || filename[keylen] == '\0')) {
1979-
PHAR_STR_FREE(str_key);
19801971
if (FAILURE == zend_hash_get_current_data(&(PHAR_GLOBALS->phar_fname_map), (void **) &pphar)) {
19811972
break;
19821973
}
19831974
*ext_str = filename + (keylen - (*pphar)->ext_len);
19841975
goto woohoo;
19851976
}
1986-
1987-
PHAR_STR_FREE(str_key);
1988-
zend_hash_move_forward(&(PHAR_GLOBALS->phar_fname_map));
19891977
}
19901978

19911979
if (PHAR_G(manifest_cached)) {
1992-
zend_hash_internal_pointer_reset(&cached_phars);
1993-
1994-
while (FAILURE != zend_hash_has_more_elements(&cached_phars)) {
1995-
if (HASH_KEY_NON_EXISTENT == zend_hash_get_current_key_ex(&cached_phars, &key, &keylen, &unused, 0, NULL)) {
1996-
break;
1997-
}
1998-
1999-
PHAR_STR(key, str_key);
2000-
1980+
for (zend_hash_internal_pointer_reset(&cached_phars);
1981+
HASH_KEY_NON_EXISTENT != zend_hash_get_current_key_ex(&cached_phars, &str_key, &keylen, &unused, 0, NULL);
1982+
zend_hash_move_forward(&cached_phars)
1983+
) {
20011984
if (keylen > (uint) filename_len) {
2002-
zend_hash_move_forward(&cached_phars);
2003-
PHAR_STR_FREE(str_key);
20041985
continue;
20051986
}
20061987

20071988
if (!memcmp(filename, str_key, keylen) && ((uint)filename_len == keylen
20081989
|| filename[keylen] == '/' || filename[keylen] == '\0')) {
2009-
PHAR_STR_FREE(str_key);
20101990
if (FAILURE == zend_hash_get_current_data(&cached_phars, (void **) &pphar)) {
20111991
break;
20121992
}
20131993
*ext_str = filename + (keylen - (*pphar)->ext_len);
20141994
goto woohoo;
20151995
}
2016-
PHAR_STR_FREE(str_key);
2017-
zend_hash_move_forward(&cached_phars);
20181996
}
20191997
}
20201998
}

ext/phar/phar_internal.h

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -518,13 +518,6 @@ extern char *(*phar_save_resolve_path)(const char *filename, int filename_len TS
518518

519519
#define phar_stream_copy_to_stream(src, dest, maxlen, len) _php_stream_copy_to_stream_ex((src), (dest), (maxlen), (len) STREAMS_CC TSRMLS_CC)
520520

521-
typedef char *phar_zstr;
522-
#define PHAR_STR(a, b) \
523-
b = a;
524-
#define PHAR_ZSTR(a, b) \
525-
b = a;
526-
#define PHAR_STR_FREE(a)
527-
528521
BEGIN_EXTERN_C()
529522

530523
#ifdef PHP_WIN32

0 commit comments

Comments
 (0)