summaryrefslogtreecommitdiff
path: root/ext/zip/zip_stream.c
diff options
context:
space:
mode:
authorXinchen Hui <laruence@gmail.com>2014-02-23 18:08:35 +0800
committerXinchen Hui <laruence@gmail.com>2014-02-23 18:08:35 +0800
commitc0aba2c641a6bfe909011d0fc25acfdd63d85525 (patch)
tree4fc6c3d5422895be209118ddc52f707da35b5679 /ext/zip/zip_stream.c
parent0e4cfad1e8f6d199fd396082985aa2a0bb7c716b (diff)
downloadphp-git-c0aba2c641a6bfe909011d0fc25acfdd63d85525.tar.gz
Refactor basename using zend_string
Diffstat (limited to 'ext/zip/zip_stream.c')
-rw-r--r--ext/zip/zip_stream.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/ext/zip/zip_stream.c b/ext/zip/zip_stream.c
index 8d02d89637..956f066064 100644
--- a/ext/zip/zip_stream.c
+++ b/ext/zip/zip_stream.c
@@ -118,13 +118,12 @@ static int php_zip_ops_stat(php_stream *stream, php_stream_statbuf *ssb TSRMLS_D
struct zip_stat sb;
const char *path = stream->orig_path;
int path_len = strlen(stream->orig_path);
- char *file_basename;
- size_t file_basename_len;
char file_dirname[MAXPATHLEN];
struct zip *za;
char *fragment;
int fragment_len;
int err;
+ zend_string *file_basename;
fragment = strchr(path, '#');
if (!fragment) {
@@ -149,11 +148,11 @@ static int php_zip_ops_stat(php_stream *stream, php_stream_statbuf *ssb TSRMLS_D
memcpy(file_dirname, path, path_len - fragment_len);
file_dirname[path_len - fragment_len] = '\0';
- php_basename((char *)path, path_len - fragment_len, NULL, 0, &file_basename, &file_basename_len TSRMLS_CC);
+ file_basename = php_basename((char *)path, path_len - fragment_len, NULL, 0 TSRMLS_CC);
fragment++;
if (ZIP_OPENBASEDIR_CHECKPATH(file_dirname)) {
- efree(file_basename);
+ STR_RELEASE(file_basename);
return -1;
}
@@ -161,7 +160,7 @@ static int php_zip_ops_stat(php_stream *stream, php_stream_statbuf *ssb TSRMLS_D
if (za) {
memset(ssb, 0, sizeof(php_stream_statbuf));
if (zip_stat(za, fragment, ZIP_FL_NOCASE, &sb) != 0) {
- efree(file_basename);
+ STR_RELEASE(file_basename);
return -1;
}
zip_close(za);
@@ -185,7 +184,7 @@ static int php_zip_ops_stat(php_stream *stream, php_stream_statbuf *ssb TSRMLS_D
#endif
ssb->sb.st_ino = -1;
}
- efree(file_basename);
+ STR_RELEASE(file_basename);
return 0;
}
/* }}} */