[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gtkmm
Subject:    Glib::KeyFile bug?
From:       Damon Register <damonregister () bellsouth ! net>
Date:       2008-06-21 12:37:36
Message-ID: 485CF610.5000503 () bellsouth ! net
[Download RAW message or body]

I am attempting to use the Glib::KeyFile in my application.  It actually
worked and the key values were extracted just as I expected.  I wanted
to experiment so I copied my test app to another folder.  I tampered and
then ran but it crashed with

   This application has requested the Runtime to terminate it in an unusual way.
   Please contact the application's support team for more information.

I realized that I had forgotten to copy the key file so I copied that to
the new test directory and then the program ran.  I got a bit curious about
this so I looked at the glibmm reference for Glib::KeyFile::load_from_file
where it said that it would return false if the file could not be loaded.
I trimmed it down to a very simple gtkmm app that does nothing but create
an instance of KeyFile and call load_from_file.  Still I found that the
program would die if the key file is not present.  It is possible that I
am not understanding the reference material but I expect that the function
would just return false if the file is not present.  In my example that
I have included, I expect to just get the cout output
file_success=0
Is this not correct?  Is there a bug in Glib::KeyFile?

Damon Register


#include <gtkmm/window.h>
#include <gtkmm/main.h>
#include <gtkmm/stock.h>
#include <glibmm/keyfile.h>

#include <iostream>

class ExampleWindow : public Gtk::Window
{
public:
   ExampleWindow();
   virtual ~ExampleWindow();

protected:
   Glib::KeyFile*  mykey;

};

ExampleWindow::ExampleWindow()
{
   bool file_success = false;

   set_title("KeyFile example");
   show_all_children();

   mykey = new Glib::KeyFile();
   file_success = mykey->load_from_file( "hello.ini", Glib::KEY_FILE_NONE ); //NONE is default
   std::cout << "file_success=" << file_success << std::endl;
}

ExampleWindow::~ExampleWindow()
{
   delete mykey;
}


int main(int argc, char *argv[])
{
   Gtk::Main kit(argc, argv);
   ExampleWindow window;
   Gtk::Main::run(window);
   return 0;
}

#The key file
# this is just an example
# there can be comments before the first group

[First Group]

Name=Key File Example\tthis value shows\nescaping

# localized strings are stored in multiple key-value pairs
Welcome=Hello
Welcome[de]=Hallo
Welcome[fr]=Bonjour
Welcome[it]=Ciao
_______________________________________________
gtkmm-list mailing list
gtkmm-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtkmm-list
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic