tags 622100 + confirmed thanks Thanks for finding this bug, Rowan. I'll try to upload a new version soon, and make sure that this bug is fixed.
-Brandon On Sun, 10 Apr 2011 19:08:57 +1000 Rowan Vince <[email protected]> wrote: > Package: xevil > Version: 2.02r2-9 > Tags: patch > > xevil does not always read X resources correctly for the definition > of keyboard mappings. This is because of the use of invalid memory in > the routine Game::process_x_resources(). The "option" char pointer > points to memory provided by a temporary string object that has gone > out of scope when "option" is used. This bug is only noticeable for > certain implementations of STL on the compiler platform. Here is a > suggested fix: > > --- a/cmn/game.cpp > +++ b/cmn/game.cpp > @@ -2254,10 +2254,10 @@ void Game::process_x_resources(int *,char **) > strm << "right_" << keysNames[n]; > else > strm << "right_" << keysNames[n] << "_2"; > - const char *option = strm.str().c_str(); > + string option = strm.str(); > > // Should we free value?? > - char *value = > XGetDefault(ui->get_dpy(0),XEVIL_CLASS,option); > + char *value = > XGetDefault(ui->get_dpy(0),XEVIL_CLASS,option.c_str()); if (value) { > KeySym keysym = XStringToKeysym(value); > if (keysym != NoSymbol) > @@ -2273,10 +2273,10 @@ void Game::process_x_resources(int *,char **) > strm << "left_" << keysNames[n]; > else > strm << "left_" << keysNames[n] << "_2"; > - const char *option = strm.str().c_str(); > + string option = strm.str(); > > // Should we free value?? > - char *value = > XGetDefault(ui->get_dpy(0),XEVIL_CLASS,option); > + char *value = > XGetDefault(ui->get_dpy(0),XEVIL_CLASS,option.c_str()); if (value) { > KeySym keysym = XStringToKeysym(value); > if (keysym != NoSymbol) > -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected]

