2007-08-04 Michael Snyder * solib-svr4.c (open_symbol_file_object): Memory leak. (svr4_current_sos): Ditto. (enable_break): Ditto. Index: solib-svr4.c =================================================================== RCS file: /cvs/src/src/gdb/solib-svr4.c,v retrieving revision 1.71 diff -p -r1.71 solib-svr4.c *** solib-svr4.c 25 Jul 2007 02:12:33 -0000 1.71 --- solib-svr4.c 5 Aug 2007 02:59:55 -0000 *************** open_symbol_file_object (void *from_ttyp *** 623,628 **** --- 623,629 ---- /* Now fetch the filename from target memory. */ target_read_string (l_name, &filename, SO_NAME_MAX_PATH_SIZE - 1, &errcode); + make_cleanup (xfree, filename); if (errcode) { *************** open_symbol_file_object (void *from_ttyp *** 631,637 **** return 0; } - make_cleanup (xfree, filename); /* Have a pathname: read the symbol file. */ symbol_file_add_main (filename, from_tty); --- 632,637 ---- *************** svr4_current_sos (void) *** 751,759 **** { strncpy (new->so_name, buffer, SO_NAME_MAX_PATH_SIZE - 1); new->so_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0'; - xfree (buffer); strcpy (new->so_original_name, new->so_name); } /* If this entry has no name, or its name matches the name for the main executable, don't include it in the list. */ --- 751,759 ---- { strncpy (new->so_name, buffer, SO_NAME_MAX_PATH_SIZE - 1); new->so_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0'; strcpy (new->so_original_name, new->so_name); } + xfree (buffer); /* If this entry has no name, or its name matches the name for the main executable, don't include it in the list. */ *************** enable_break (void) *** 1008,1013 **** --- 1008,1014 ---- tmp_fd = solib_open (buf, &tmp_pathname); if (tmp_fd >= 0) tmp_bfd = bfd_fopen (tmp_pathname, gnutarget, FOPEN_RB, tmp_fd); + xfree (tmp_pathname); if (tmp_bfd == NULL) goto bkpt_at_symbol;