On Wed, 2006-09-27 at 20:31 +0200, Murray Cumming wrote: > If you attach an actual test case, I will investigate. Attached to this email is a small file that I think highlights that adding an option group to a context has "issues". With SHOW_DATA_CORRUPTION_ISSUE set to 0 the program runs as expected, but set to 1 (so thja the options.add_entry ( entry , version ) ; is executed, then the result is: *** glibc detected *** double free or corruption (fasttop): 0x0804b188 *** Aborted I am using Ubuntu 6.06 LTS Dapper Drake so GTKmm is version: ii libgtkmm-2.4-1c2a 2.8.8-0ubuntu1 C++ wrappers for GTK+ 2.4 (shared libraries) (clearly this is an old GTKmm so the bug may not be a bug any more as far as GTKmm is concerned.) -- Russel. ==================================================== Dr Russel Winder +44 20 7585 2200 41 Buckmaster Road +44 7770 465 077 London SW11 1EN, UK russel russel org uk
#include <iostream> #include <glibmm.h> #include <gtkmm.h> #define SHOW_DATA_CORRUPTION_ISSUE 0 int main ( int ac , char * * av ) { Glib::ustring name ( "test" ) ; bool version ( FALSE ) ; Glib::OptionEntry entry ; entry.set_long_name ( "version" ) ; entry.set_description ( "Show version and exit." ) ; Glib::OptionGroup options ( name , "Test" ) ; #if SHOW_DATA_CORRUPTION_ISSUE options.add_entry ( entry , version ) ; #endif Glib::OptionContext context ( "-- A message." ) ; context.add_group ( options ) ; context.set_main_group ( options ) ; try { Gtk::Main application ( ac , av , context ) ; } catch ( const Glib::OptionError & e ) { std::cout << e.what ( ) << std::endl ; return 1 ; } if ( version ) { std::cout << name << " v" << "0.0.1" << std::endl ; return 0 ; } return 0 ; }
Attachment:
signature.asc
Description: This is a digitally signed message part