diff options
author | Dmitry Stogov <dmitry@zend.com> | 2015-03-05 18:18:39 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2015-03-05 18:18:39 +0300 |
commit | 6d065a8545291a8048ef307476c4358922ca3a61 (patch) | |
tree | 00ed4a38bcc0b69729a95bd794cc171a37f3eeff /main/streams/plain_wrapper.c | |
parent | bb91bf83f9fc60cbd6cb30e6b2a7858efe1aa4c5 (diff) | |
download | php-git-6d065a8545291a8048ef307476c4358922ca3a61.tar.gz |
Avoid repeatable strlen() calls
Diffstat (limited to 'main/streams/plain_wrapper.c')
-rw-r--r-- | main/streams/plain_wrapper.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/main/streams/plain_wrapper.c b/main/streams/plain_wrapper.c index 83bd059c34..6af8ffa964 100644 --- a/main/streams/plain_wrapper.c +++ b/main/streams/plain_wrapper.c @@ -1390,12 +1390,10 @@ PHPAPI php_stream *_php_stream_fopen_with_path(const char *filename, const char /* code ripped off from fopen_wrappers.c */ char *pathbuf, *end; const char *ptr; - const char *exec_fname; char trypath[MAXPATHLEN]; php_stream *stream; - int path_length; int filename_length; - int exec_fname_length; + zend_string *exec_filename; if (opened_path) { *opened_path = NULL; @@ -1471,17 +1469,18 @@ not_relative_path: /* append the calling scripts' current working directory * as a fall back case */ - if (zend_is_executing()) { - exec_fname = zend_get_executed_filename(); - exec_fname_length = (int)strlen(exec_fname); - path_length = (int)strlen(path); + if (zend_is_executing() && + (exec_filename = zend_get_executed_filename_ex()) != NULL) { + const char *exec_fname = exec_filename->val; + size_t exec_fname_length = exec_filename->len; while ((--exec_fname_length >= 0) && !IS_SLASH(exec_fname[exec_fname_length])); - if ((exec_fname && exec_fname[0] == '[') - || exec_fname_length<=0) { - /* [no active file] or no path */ + if (exec_fname_length<=0) { + /* no path */ pathbuf = estrdup(path); } else { + size_t path_length = strlen(path); + pathbuf = (char *) emalloc(exec_fname_length + path_length +1 +1); memcpy(pathbuf, path, path_length); pathbuf[path_length] = DEFAULT_DIR_SEPARATOR; |