]> granicus.if.org Git - php/commitdiff
Fixed a memory leak on highlight_file() with a non-existant file
authorIlia Alshanetsky <iliaa@php.net>
Tue, 13 Feb 2007 23:39:14 +0000 (23:39 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Tue, 13 Feb 2007 23:39:14 +0000 (23:39 +0000)
main/streams/plain_wrapper.c

index ab7d67ceb03b0bbcf75537b78465e83ec7fa52d9..430f7897329d9a61d147cc5e69d6c85bfa608ca5 100644 (file)
@@ -889,12 +889,12 @@ PHPAPI php_stream *_php_stream_fopen(const char *filename, const char *mode, cha
                                        *opened_path = realpath;
                                        realpath = NULL;
                                }
-                               if (realpath) {
-                                       efree(realpath);
-                               }
                                /* fall through */
 
                        case PHP_STREAM_PERSISTENT_FAILURE:
+                               if (realpath) {
+                                       efree(realpath);
+                               }
                                efree(persistent_id);;
                                return ret;
                }
@@ -933,6 +933,10 @@ PHPAPI php_stream *_php_stream_fopen(const char *filename, const char *mode, cha
 
                                r = do_fstat(self, 0);
                                if ((r == 0 && !S_ISREG(self->sb.st_mode))) {
+                                       if (opened_path) {
+                                               efree(*opened_path);
+                                               *opened_path = NULL;
+                                       }
                                        php_stream_close(ret);
                                        return NULL;
                                }