Glib::KeyFile bug?



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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]