From: Mark Wielaard Date: Sun, 9 Jan 2005 13:54:34 +0000 (+0000) Subject: parse.y (process_imports): Allocate (and free) original_name only when not already... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b927d3a45120ee708b6579bd482bb75d627ebd9d;p=gcc.git parse.y (process_imports): Allocate (and free) original_name only when not already defined. * parse.y (process_imports): Allocate (and free) original_name only when not already defined. * jcf-parse.c (read_class): Free results of find_class() and lrealpath(). (java_parse_file): Keep pointer to head of file_list and free when done. Free result of lrealpath(). From-SVN: r93109 --- diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 06af4062141..af1736dc96a 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,12 @@ +2005-01-08 Mark Wielaard + + * parse.y (process_imports): Allocate (and free) original_name only + when not already defined. + * jcf-parse.c (read_class): Free results of find_class() and + lrealpath(). + (java_parse_file): Keep pointer to head of file_list and free when + done. Free result of lrealpath(). + 2005-01-05 Tom Tromey * gcj.texi (Standard Properties): java.ext.dirs is now used. diff --git a/gcc/java/jcf-parse.c b/gcc/java/jcf-parse.c index b6732a17234..50a75054cb1 100644 --- a/gcc/java/jcf-parse.c +++ b/gcc/java/jcf-parse.c @@ -530,11 +530,17 @@ read_class (tree name) if (jcf == NULL) { + const char* path_name; this_jcf.zipd = NULL; jcf = &this_jcf; - if (find_class (IDENTIFIER_POINTER (name), IDENTIFIER_LENGTH (name), - &this_jcf, 1) == 0) + + path_name = find_class (IDENTIFIER_POINTER (name), + IDENTIFIER_LENGTH (name), + &this_jcf, 1); + if (path_name == 0) return 0; + else + free((char *) path_name); } current_jcf = jcf; @@ -542,6 +548,7 @@ read_class (tree name) if (current_jcf->java_source) { const char *filename = current_jcf->filename; + char *real_path; tree given_file, real_file; FILE *finput; int generate; @@ -551,7 +558,9 @@ read_class (tree name) given_file = get_identifier (filename); filename = IDENTIFIER_POINTER (given_file); - real_file = get_identifier (lrealpath (filename)); + real_path = lrealpath (filename); + real_file = get_identifier (real_path); + free (real_path); generate = IS_A_COMMAND_LINE_FILENAME_P (given_file); output_class = current_class = NULL_TREE; @@ -1025,7 +1034,7 @@ java_parse_file (int set_yydebug ATTRIBUTE_UNUSED) { int filename_count = 0; location_t save_location = input_location; - char *list, *next; + char *file_list = NULL, *list, *next; tree node; FILE *finput = NULL; int in_quotes = 0; @@ -1063,6 +1072,7 @@ java_parse_file (int set_yydebug ATTRIBUTE_UNUSED) } fclose (finput); finput = NULL; + file_list = list; } else list = (char *) main_input_filename; @@ -1138,6 +1148,9 @@ java_parse_file (int set_yydebug ATTRIBUTE_UNUSED) list = next; } + if (file_list != NULL) + free (file_list); + if (filename_count == 0) warning ("no input file specified"); @@ -1159,13 +1172,16 @@ java_parse_file (int set_yydebug ATTRIBUTE_UNUSED) for (node = current_file_list; node; node = TREE_CHAIN (node)) { unsigned char magic_string[4]; + char *real_path; uint32 magic = 0; tree name = DECL_NAME (node); tree real_file; const char *filename = IDENTIFIER_POINTER (name); /* Skip already parsed files */ - real_file = get_identifier (lrealpath (filename)); + real_path = lrealpath (filename); + real_file = get_identifier (real_path); + free (real_path); if (HAS_BEEN_ALREADY_PARSED_P (real_file)) continue; diff --git a/gcc/java/parse.y b/gcc/java/parse.y index 815b51eae17..b09bb875157 100644 --- a/gcc/java/parse.y +++ b/gcc/java/parse.y @@ -6955,14 +6955,14 @@ process_imports (void) tree to_be_found = EXPR_WFL_NODE (TREE_PURPOSE (import)); char *original_name; - original_name = xmemdup (IDENTIFIER_POINTER (to_be_found), - IDENTIFIER_LENGTH (to_be_found), - IDENTIFIER_LENGTH (to_be_found) + 1); - /* Don't load twice something already defined. */ if (IDENTIFIER_CLASS_VALUE (to_be_found)) continue; + original_name = xmemdup (IDENTIFIER_POINTER (to_be_found), + IDENTIFIER_LENGTH (to_be_found), + IDENTIFIER_LENGTH (to_be_found) + 1); + while (1) { tree left;