From fb028a9d622c2d9f0fe7014c68e9a394de61c7d0 Mon Sep 17 00:00:00 2001 From: short <> Date: Wed, 12 Nov 2003 06:25:26 +0000 Subject: [PATCH] Fixed SIGSEGV during close of GnomeVFSHandle reopened due to its timeout. --- src/install/acquire/cabinet.h | 4 ++-- src/install/acquire/moduriload.c | 9 +++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/install/acquire/cabinet.h b/src/install/acquire/cabinet.h index 59eeeda..5de7520 100644 --- a/src/install/acquire/cabinet.h +++ b/src/install/acquire/cabinet.h @@ -36,7 +36,7 @@ struct acquire_cabinet { gpointer base; guint8 *base_cached; GnomeVFSFileOffset offset; - GnomeVFSHandle *handle; + GnomeVFSHandle **handlep; GnomeVFSFileSize size; const gchar *filename; GnomeVFSURI *uri; @@ -58,7 +58,7 @@ GnomeVFSResult acquire_cabinet_read struct acquire_cabinet *acquire_cabinet_new_from_memory (gconstpointer file_base,size_t file_length,GnomeVFSURI *uri,gint cabinet_used); struct acquire_cabinet *acquire_cabinet_new_from_handle - (GnomeVFSHandle *handle,GnomeVFSFileInfo *file_info,GnomeVFSURI *uri,gint cabinet_used); + (GnomeVFSHandle **handlep,GnomeVFSFileInfo *file_info,GnomeVFSURI *uri,gint cabinet_used); void acquire_cabinet_free(struct acquire_cabinet *acquire_cabinet); void acquire_cabinet_load(struct acquire_cabinet *acquire_cabinet); diff --git a/src/install/acquire/moduriload.c b/src/install/acquire/moduriload.c index 6b2d591..fed2307 100644 --- a/src/install/acquire/moduriload.c +++ b/src/install/acquire/moduriload.c @@ -191,15 +191,16 @@ fail_free_file_buffer: } static void mod_uri_load_file_handle_remote_cabinet - (GnomeVFSHandle *handle,GnomeVFSFileInfo *file_info,GnomeVFSURI *uri,gint cabinet_used) + (GnomeVFSHandle **handlep,GnomeVFSFileInfo *file_info,GnomeVFSURI *uri,gint cabinet_used) { struct acquire_cabinet *acquire_cabinet; - g_return_if_fail(handle!=NULL); + g_return_if_fail(handlep!=NULL); + g_return_if_fail(*handlep!=NULL); g_return_if_fail(file_info!=NULL); g_return_if_fail(uri!=NULL); - acquire_cabinet=acquire_cabinet_new_from_handle(handle,file_info,uri,cabinet_used); + acquire_cabinet=acquire_cabinet_new_from_handle(handlep,file_info,uri,cabinet_used); /* acquire_cabinet_load() will call mod_uri_load_module_from_memory(): */ acquire_cabinet_load(acquire_cabinet); acquire_cabinet_free(acquire_cabinet); @@ -234,7 +235,7 @@ GnomeVFSHandle *handle; else { gint cabinet_used=captivemodid_cabinet_length_to_used(file_info_local.size); - mod_uri_load_file_handle_remote_cabinet(handle,&file_info_local,uri,cabinet_used); + mod_uri_load_file_handle_remote_cabinet(&handle,&file_info_local,uri,cabinet_used); } errvfsresult=GNOME_VFS_OK; /* PASSTHRU */ -- 1.8.3.1