[Glade-devel] win32 patch for glade-2.5.1 cvs
todd
taf2@lehigh.edu
Mon, 12 Apr 2004 05:34:21 -0400
This is a multi-part message in MIME format.
--------------060305030101070605050805
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Thanks, for the pointer but still not luck. I recompiled iconv and
libintl using MSVCRT.dll and i still have the same issue when
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" <taf2@lehigh.edu>
>Cc: <glade-devel@ximian.com>
>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
>>
>>
>>
>
>
>----------------------------------------------------------------------------
>----
>
>
>
>
>>? 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,
>>
>>
>*new_modules = 0;
>
>
>> #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
>>
>>
>map."),
>
>
>>- GbCxxVisibilityChoices);
>>-
>>- /* 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
>>
>>
>map."),
>
>
>>+ 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 - Glade-devel@lists.ximian.com
>http://lists.ximian.com/mailman/listinfo/glade-devel
>
>
>
--------------060305030101070605050805
Content-Type: text/x-vcard; charset=utf8;
name="taf2.vcf"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="taf2.vcf"
begin:vcard
fn:Todd Fisher
n:Fisher;Todd
email;internet:taf2@lehigh.edu
x-mozilla-html:FALSE
url:http://severna.homeip.net
version:2.1
end:vcard
--------------060305030101070605050805--