Author: lupus
Date: 2007-09-20 10:50:39 -0400 (Thu, 20 Sep 2007)
New Revision: 86062

Modified:
   trunk/mono/mono/metadata/ChangeLog
   trunk/mono/mono/metadata/image.c
   trunk/mono/mono/metadata/metadata-internals.h
Log:


Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <[EMAIL PROTECTED]>

        * image.c, metadata-internals.h: don't keep a file descriptor open
        for loaded assemblies (bug#325988).



Modified: trunk/mono/mono/metadata/ChangeLog
===================================================================
--- trunk/mono/mono/metadata/ChangeLog  2007-09-20 14:50:04 UTC (rev 86061)
+++ trunk/mono/mono/metadata/ChangeLog  2007-09-20 14:50:39 UTC (rev 86062)
@@ -1,3 +1,9 @@
+
+Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <[EMAIL PROTECTED]>
+
+       * image.c, metadata-internals.h: don't keep a file descriptor open
+       for loaded assemblies (bug#325988).
+
 2007-09-19  Raja R Harinath  <[EMAIL PROTECTED]>
 
        * metadata.c (signature_in_image): New.  Carve out of type_in_image.

Modified: trunk/mono/mono/metadata/image.c
===================================================================
--- trunk/mono/mono/metadata/image.c    2007-09-20 14:50:04 UTC (rev 86061)
+++ trunk/mono/mono/metadata/image.c    2007-09-20 14:50:39 UTC (rev 86062)
@@ -912,7 +912,7 @@
                return NULL;
        }
        image = g_new0 (MonoImage, 1);
-       image->file_descr = filed;
+       image->raw_buffer_used = TRUE;
        image->raw_data_len = stat_buf.st_size;
        image->raw_data = mono_raw_buffer_load (fileno (filed), FALSE, 0, 
stat_buf.st_size);
        iinfo = g_new0 (MonoCLIImageInfo, 1);
@@ -921,6 +921,8 @@
        image->ref_only = refonly;
        image->ref_count = 1;
 
+       fclose (filed);
+
        return do_mono_image_load (image, status, care_about_cli);
 }
 
@@ -1222,9 +1224,7 @@
 
        mono_images_unlock ();
 
-       if (image->file_descr) {
-               fclose (image->file_descr);
-               image->file_descr = NULL;
+       if (image->raw_buffer_used) {
                if (image->raw_data != NULL)
                        mono_raw_buffer_free (image->raw_data);
        }

Modified: trunk/mono/mono/metadata/metadata-internals.h
===================================================================
--- trunk/mono/mono/metadata/metadata-internals.h       2007-09-20 14:50:04 UTC 
(rev 86061)
+++ trunk/mono/mono/metadata/metadata-internals.h       2007-09-20 14:50:39 UTC 
(rev 86062)
@@ -72,10 +72,9 @@
         * this image between calls of mono_image_open () and mono_image_close 
().
         */
        int   ref_count;
-       FILE *file_descr;
-       /* if file_descr is NULL the image was loaded from raw data */
        char *raw_data;
        guint32 raw_data_len;
+       guint8 raw_buffer_used    : 1;
        guint8 raw_data_allocated : 1;
 
        /* Whenever this is a dynamically emitted module */

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to