Skip to content

Commit 81b5a06

Browse files
committed
Merge branch 'master' of https://git.php.net/repository/php-src
* 'master' of https://git.php.net/repository/php-src: Remove some more unnecessary macros from phar Remove PHAR_(Z)STR* usages Remove version checks in phar
2 parents 3a8f0b1 + db6d93f commit 81b5a06

File tree

8 files changed

+64
-702
lines changed

8 files changed

+64
-702
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

0 commit comments

Comments
 (0)