clicking on the save button in glade. Also, I noticed that the source in 2.0.1 had the same static memory free issue as 2.5.1 for _WIN32,
I'm getting a demo license for insure++ maybe that will find the problem its similar to valgrind.
-todd
Link with MSVCRT.dll (release, multithreaded), passing file pointer across different M$VC runtime will crash. I believe that patching 2.5.1 for win32 is more or less the same as patching 2.0.1 (though I haven't really tried), may be this's useful:
http://gladewin32.sf.net
----- Original Message ----- From: "todd" <[EMAIL PROTECTED]>
Cc: <[EMAIL PROTECTED]>
Sent: Monday, April 12, 2004 09:36
Subject: [Glade-devel] win32 patch for glade-2.5.1 cvs
Hi, I've recently spent some getting gtk+ 2.4 working win32 for me. The one last thing I'd like to get working is glade. Everything for me is working except for the save functionality. Attached is the set of patches I made to the source to get the properties dialog box to open as well as a fix for a invalid write for both linux and win32 that I found using valgrind.
On my build save is crashing in save.c in the function save_project_file_internal when it hits the fprintf, which for me is on line 179.
I was hoping to get some feed back on some ideas about why it might be crashing on the fprintf, because if i replace the fprintf with an fwrite the call works and the file I can see is written to just fine. It feels like some how the call stack is getting corrupted. In my patch there is a fix for a win32 #define that sets a pointer to memory on the stack and then in other platforms allocates memory for the pointer on the stack but for all platforms frees that memory. So, i'm worried that the call stack might be getting corrupted because of other areas that are like this.
The other related bug fix for the file open dialog box is a fix in glib, which i reported here in bugzilla: http://bugzilla.gnome.org/show_bug.cgi?id=139423 I'd really like to get glade 2.5.x working in win32, and think that I'm really close with this patch but would like some more help in figuring out why the save function is dieing on fprintf. I hope this patch can be helpful
-todd
---------------------------------------------------------------------------- ----
*new_modules = 0;? fogb.h ? fogbframe.c ? foogbwindow.c ? mypatches.patch ? win32fix.patch Index: glade/glade_menu_editor.c =================================================================== RCS file: /cvs/gnome/glade/glade/glade_menu_editor.c,v retrieving revision 1.22 diff -u -r1.22 glade_menu_editor.c --- glade/glade_menu_editor.c 5 Apr 2004 23:18:08 -0000 1.22 +++ glade/glade_menu_editor.c 12 Apr 2004 01:23:04 -0000 @@ -25,6 +25,7 @@ #include <string.h> #include <time.h>
+#include <gtk/gtkmain.h> #include <gdk/gdkkeysyms.h> #include <gtk/gtkarrow.h> #include <gtk/gtkaccellabel.h> Index: glade/glade_project_options.c =================================================================== RCS file: /cvs/gnome/glade/glade/glade_project_options.c,v retrieving revision 1.24 diff -u -r1.24 glade_project_options.c --- glade/glade_project_options.c 5 Apr 2004 23:18:08 -0000 1.24 +++ glade/glade_project_options.c 12 Apr 2004 01:23:04 -0000 @@ -19,6 +19,7 @@ #include <ctype.h> #include <string.h>
+#include <gtk/gtkmain.h> #include <gtk/gtkalignment.h> #include <gtk/gtkentry.h> #include <gtk/gtkeventbox.h> Index: glade/glade_project_window.c =================================================================== RCS file: /cvs/gnome/glade/glade/glade_project_window.c,v retrieving revision 1.27 diff -u -r1.27 glade_project_window.c --- glade/glade_project_window.c 23 Mar 2004 17:41:29 -0000 1.27 +++ glade/glade_project_window.c 12 Apr 2004 01:23:06 -0000 @@ -1408,7 +1408,7 @@ glade_project_window_update_title (project_window); glade_project_window_setup_interface (project_window);
- gtk_widget_destroy (GTK_WIDGET (options)); + gtk_widget_hide (GTK_WIDGET (options));
switch (action) { @@ -1424,6 +1424,7 @@ glade_project_window_real_write_source (project_window); break; } + gtk_widget_destroy (GTK_WIDGET (options)); }
Index: glade/main.c =================================================================== RCS file: /cvs/gnome/glade/glade/main.c,v retrieving revision 1.15 diff -u -r1.15 main.c --- glade/main.c 25 Mar 2004 14:57:21 -0000 1.15 +++ glade/main.c 12 Apr 2004 01:23:06 -0000 @@ -23,7 +23,9 @@ #include <string.h> #include <sys/types.h> #include <sys/stat.h> +#ifdef G_OS_UNIX #include <unistd.h> +#endif
#include <gtk/gtkmain.h>
#include <gtk/gtkrc.h>
@@ -105,7 +107,7 @@
int
main (int argc, char *argv[])
{
- gchar *home_dir, *rc_path, *modules, *modules_needed, *new_modules;
+ gchar *home_dir = 0, *rc_path = 0, *modules = 0, *modules_needed = 0,
map."),#ifdef USE_GNOME GnomeProgram *program; char *icon; @@ -195,6 +197,8 @@ #else gtk_main (); #endif + + g_free( new_modules ); return 0; }
Index: glade/property.c =================================================================== RCS file: /cvs/gnome/glade/glade/property.c,v retrieving revision 1.35 diff -u -r1.35 property.c --- glade/property.c 23 Mar 2004 17:41:30 -0000 1.35 +++ glade/property.c 12 Apr 2004 01:23:09 -0000 @@ -988,59 +988,63 @@ lang_specific_properties[i] = NULL;
/* Create table for C-specific properties. */
- table = gtk_table_new (3, 3, FALSE);
- gtk_table_set_row_spacings (GTK_TABLE (table), 1);
- if (property_language == GLADE_LANGUAGE_C)
- gtk_widget_show (table);
- lang_specific_properties[GLADE_LANGUAGE_C] = table;
- gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0);
-
- property_set_table_position (table, 0);
- property_add_filename (GbCSourceFile, _("Source File:"),
- _("The file to write source code into"));
- property_add_bool (GbCPublic, _("Public:"),
- _("If the widget is added to the component's data structure"));
-
- /* Create table for C++-specific properties. */
- table = gtk_table_new (3, 3, FALSE);
- gtk_table_set_row_spacings (GTK_TABLE (table), 1);
- if (property_language == GLADE_LANGUAGE_CPP)
- gtk_widget_show (table);
- lang_specific_properties[GLADE_LANGUAGE_CPP] = table;
- gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0);
-
- property_set_table_position (table, 0);
- property_add_bool (GbCxxSeparateClass, _("Separate Class:"),
- _("Put this widget's subtree in a separate class"));
- property_add_bool (GbCxxSeparateFile, _("Separate File:"),
- _("Put this widget in a separate source file"));
- property_add_choice (GbCxxVisibility, _("Visibility:"),
- _("Visibility of widgets. Public widgets are exported to a global
- GbCxxVisibilityChoices);map."),
-
- /* Create table for Ada95-specific properties. */
- table = gtk_table_new (3, 3, FALSE);
- gtk_table_set_row_spacings (GTK_TABLE (table), 1);
- if (property_language == GLADE_LANGUAGE_ADA95)
- gtk_widget_show (table);
- lang_specific_properties[GLADE_LANGUAGE_ADA95] = table;
- gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0);
-
- property_set_table_position (table, 0);
- /* No properties yet. */
-
-
- /* Create table for Perl-specific properties. */
- table = gtk_table_new (3, 3, FALSE);
- gtk_table_set_row_spacings (GTK_TABLE (table), 1);
- if (property_language == GLADE_LANGUAGE_PERL)
- gtk_widget_show (table);
- lang_specific_properties[GLADE_LANGUAGE_PERL] = table;
- gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0);
-
- property_set_table_position (table, 0);
- /* No properties yet. */
-
+ if( GLADE_LANGUAGE_C < GladeNumLanguages ){
+ table = gtk_table_new (3, 3, FALSE);
+ gtk_table_set_row_spacings (GTK_TABLE (table), 1);
+ if (property_language == GLADE_LANGUAGE_C)
+ gtk_widget_show (table);
+ lang_specific_properties[GLADE_LANGUAGE_C] = table;
+ gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0);
+
+ property_set_table_position (table, 0);
+ property_add_filename (GbCSourceFile, _("Source File:"),
+ _("The file to write source code into"));
+ property_add_bool (GbCPublic, _("Public:"),
+ _("If the widget is added to the component's data structure"));
+ }
+ if( GLADE_LANGUAGE_CPP < GladeNumLanguages ){
+ /* Create table for C++-specific properties. */
+ table = gtk_table_new (3, 3, FALSE);
+ gtk_table_set_row_spacings (GTK_TABLE (table), 1);
+ if (property_language == GLADE_LANGUAGE_CPP)
+ gtk_widget_show (table);
+ lang_specific_properties[GLADE_LANGUAGE_CPP] = table;
+ gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0);
+
+ property_set_table_position (table, 0);
+ property_add_bool (GbCxxSeparateClass, _("Separate Class:"),
+ _("Put this widget's subtree in a separate class"));
+ property_add_bool (GbCxxSeparateFile, _("Separate File:"),
+ _("Put this widget in a separate source file"));
+ property_add_choice (GbCxxVisibility, _("Visibility:"),
+ _("Visibility of widgets. Public widgets are exported to a global
+ GbCxxVisibilityChoices); + } + if( GLADE_LANGUAGE_ADA95 < GladeNumLanguages ){ + /* Create table for Ada95-specific properties. */ + table = gtk_table_new (3, 3, FALSE); + gtk_table_set_row_spacings (GTK_TABLE (table), 1); + if (property_language == GLADE_LANGUAGE_ADA95) + gtk_widget_show (table); + lang_specific_properties[GLADE_LANGUAGE_ADA95] = table; + gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0); + + property_set_table_position (table, 0); + /* No properties yet. */ + + } + if( GLADE_LANGUAGE_PERL < GladeNumLanguages ){ + /* Create table for Perl-specific properties. */ + table = gtk_table_new (3, 3, FALSE); + gtk_table_set_row_spacings (GTK_TABLE (table), 1); + if (property_language == GLADE_LANGUAGE_PERL) + gtk_widget_show (table); + lang_specific_properties[GLADE_LANGUAGE_PERL] = table; + gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0); + + property_set_table_position (table, 0); + /* No properties yet. */ + } }
Index: glade/utils.c =================================================================== RCS file: /cvs/gnome/glade/glade/utils.c,v retrieving revision 1.30 diff -u -r1.30 utils.c --- glade/utils.c 23 Mar 2004 17:41:30 -0000 1.30 +++ glade/utils.c 12 Apr 2004 01:23:11 -0000 @@ -21,7 +21,9 @@ #include <string.h> #include <sys/types.h> #include <sys/stat.h> +#ifdef G_OS_UNIX #include <unistd.h> +#endif #include <dirent.h> #include <errno.h>
@@ -1331,7 +1333,10 @@ if (dir_pos > root_pos) dir_pos++; len = dir_pos + 1 + (strlen (file) - file_pos) + 1; - path = g_malloc (len); + path = g_try_malloc (len); + if( path == NULL ){ + return NULL; + } strncpy (path, dir, dir_pos); path[dir_pos] = G_DIR_SEPARATOR; strcpy (path + dir_pos + 1, file + file_pos); @@ -1602,11 +1607,13 @@ gint project_num, max_project_num, project_string_len; gint num_matched, chars_matched;
-#ifdef _WIN32 - projects_dir = "C:\\Projects"; -#else + projects_dir = glade_util_make_absolute_path (g_get_home_dir (), _("Projects")); +#ifdef _WIN32 + if( projects_dir == NULL ){ + projects_dir = g_strdup( "C:\\Projects" ); + } #endif
/* Step through the 'Projects' directory, if it exists, to find
_______________________________________________ Glade-devel maillist - [EMAIL PROTECTED] http://lists.ximian.com/mailman/listinfo/glade-devel
begin:vcard fn:Todd Fisher n:Fisher;Todd email;internet:[EMAIL PROTECTED] x-mozilla-html:FALSE url:http://severna.homeip.net version:2.1 end:vcard
