+2005-01-08 Mark Wielaard <mark@klomp.org>
+
+ * 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 <tromey@redhat.com>
* gcj.texi (Standard Properties): java.ext.dirs is now used.
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;
if (current_jcf->java_source)
{
const char *filename = current_jcf->filename;
+ char *real_path;
tree given_file, real_file;
FILE *finput;
int generate;
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;
{
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;
}
fclose (finput);
finput = NULL;
+ file_list = list;
}
else
list = (char *) main_input_filename;
list = next;
}
+ if (file_list != NULL)
+ free (file_list);
+
if (filename_count == 0)
warning ("no input file specified");
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;
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;