Re: File descriptor leak patch for Evolution
Srinivasa Ragavan <[email protected]> Tue, 29 May 2007 10:40:57 +0530
| Newsgroups | gmane.comp.gnome.evolution.patches |
|---|---|
| Message-ID | <[email protected]> |
On Mon, 2007-05-28 at 17:04 +0200, Jules Colding wrote: > Hi, > > The patch below will fix the very few file descriptor leaks that I've > found in Evolution. I've reviewed the source for leaks from open() and > opendir(). Only a few was found. > > May I commit? Please commit. -Srini. > > Best regards and thanks, > jules > > > > Index: shell/ChangeLog > =================================================================== > --- shell/ChangeLog (revision 33593) > +++ shell/ChangeLog (working copy) > @@ -1,3 +1,7 @@ > +2007-05-28 Jules Colding <[email protected]> > + > + * main.c (main): Prevent dup2() and close() on -1 > + > 2007-05-13 Matthew Barnes <[email protected]> > > * e-shell.c (impl_Shell_handleURI): > Index: shell/main.c > =================================================================== > --- shell/main.c (revision 33593) > +++ shell/main.c (working copy) > @@ -541,7 +541,7 @@ > int fd; > > fd = g_open (evolution_debug_log, O_WRONLY | O_CREAT | O_TRUNC, 0600); > - if (fd) { > + if (fd != -1) { > dup2 (fd, STDOUT_FILENO); > dup2 (fd, STDERR_FILENO); > close (fd); > Index: mail/ChangeLog > =================================================================== > --- mail/ChangeLog (revision 33593) > +++ mail/ChangeLog (working copy) > @@ -1,3 +1,17 @@ > +2007-05-28 Jules Colding <[email protected]> > + > + * em-utils.c (em_utils_selection_set_urilist): Fix file leak > + (em_utils_selection_get_urilist): Fix file leak > + > + * importers/evolution-outlook-importer.c (import_outlook_import): Fix file leak > + > +2007-05-25 Jules Colding <[email protected]> > + > + * importers/mail-importer.c (import_mbox_import): Impossible code branch commented > + > + * importers/netscape-importer.c (netscape_import_filters): Fix file leak > + (netscape_init_prefs): Fix file leak > + > 2007-05-25 Matthew Barnes <[email protected]> > > * mail-send-recv.c: > Index: mail/em-utils.c > =================================================================== > --- mail/em-utils.c (revision 33593) > +++ mail/em-utils.c (working copy) > @@ -1115,7 +1115,9 @@ > } > > camel_object_unref(fstream); > - } > + } else > + close(fd); > + > g_free(uri); > } > > @@ -1154,8 +1156,11 @@ > if (strcmp(url->protocol, "file") == 0 > && (fd = g_open(url->path, O_RDONLY | O_BINARY, 0)) != -1) { > stream = camel_stream_fs_new_with_fd(fd); > - res = em_utils_read_messages_from_stream(folder, stream); > - camel_object_unref(stream); > + if (stream) { > + res = em_utils_read_messages_from_stream(folder, stream); > + camel_object_unref(stream); > + } else > + close(fd); > } > camel_url_free(url); > } > Index: mail/importers/mail-importer.c > =================================================================== > --- mail/importers/mail-importer.c (revision 33593) > +++ mail/importers/mail-importer.c (working copy) > @@ -223,7 +223,7 @@ > > mp = camel_mime_parser_new(); > camel_mime_parser_scan_from(mp, TRUE); > - if (camel_mime_parser_init_with_fd(mp, fd) == -1) { > + if (camel_mime_parser_init_with_fd(mp, fd) == -1) { /* will never happen - 0 is unconditionally returned */ > goto fail2; > } > > Index: mail/importers/netscape-importer.c > =================================================================== > --- mail/importers/netscape-importer.c (revision 33593) > +++ mail/importers/netscape-importer.c (working copy) > @@ -1238,7 +1238,7 @@ > exit: > g_free(user); > g_object_unref((fc)); > - > + fclose (mailrule_handle); > } > > /* Email folder & accounts stuff ----------------------------------------------- */ > @@ -1444,6 +1444,7 @@ > g_hash_table_insert (user_prefs, key, value); > } > > + fclose (prefs_handle); > return; > } > > Index: mail/importers/evolution-outlook-importer.c > =================================================================== > --- mail/importers/evolution-outlook-importer.c (revision 33593) > +++ mail/importers/evolution-outlook-importer.c (working copy) > @@ -316,6 +316,7 @@ > struct _import_outlook_msg *m = (struct _import_outlook_msg *) mm; > struct stat st; > CamelFolder *folder; > + int fd = -1; > > if (stat(m->path, &st) == -1) { > g_warning("cannot find source file to import '%s': %s", m->path, g_strerror(errno)); > @@ -334,7 +335,6 @@ > CamelOperation *oldcancel = NULL; > CamelMessageInfo *info; > GByteArray *buffer; > - int fd; > off_t pos; > > fd = g_open(m->path, O_RDONLY|O_BINARY, 0); > @@ -413,6 +413,8 @@ > g_byte_array_free(buffer, TRUE); > } > fail: > + if (fd != -1) > + close(fd); > camel_object_unref(folder); > } > > > > _______________________________________________ > Evolution-patches mailing list > [email protected] > http://mail.gnome.org/mailman/listinfo/evolution-patches