From: <AAg...@ne...> - 2001-10-17 08:15:12
|
Hi! Pavel Tsekov <pt...@sy...> wrote: >Add a erronous configuration line in your >config file and start golded+. What you'll >see (I'm running Linux) is a black screen and >nothing much - press a key and you'll see >the main screen :) > >Now I fired golded+ throuhg gdb and stepping >I found the place where it hangs: > >Line 721, geinit.cpp > > if(cfgerrors) { > std::cout << "* Total CFG errors found: " << cfgerrors > << ". Press almost any key to continue." << std::endl; > kbclear(); > waitkey(); > } Yep, that's an old bug, but it is hard to fix it. There's much more places where std::cout used for errors/warnings printing out. Seems like the best way to fix it is to create some kind of class which will acts the same way as iostream but will acts through the curses after it's initialization. >1. If possible do the config file processing before >any call to ncurses routines - ie create GVid >instance after all issues with the config file >are settled. ncurses initialized in GKbd as well, so this will not solve the problem :-( >2. Replace the printing to std::cout with a >simple ncurses Yes/No message box which informs >the user of the situation. What about other error messages? Though... we can print them into log :-) -- alexander aganichev url: http://aaganichev.narod.ru __________________________________________________________________ Your favorite stores, helpful shopping tools and great gift ideas. Experience the convenience of buying online with Shop@Netscape! http://shopnow.netscape.com/ Get your own FREE, personal Netscape Mail account today at http://webmail.netscape.com/ |
From: Pavel T. <pt...@sy...> - 2001-10-17 10:40:33
|
Hey, Alex :) Alexander Aganichev wrote: > > Hi! > > Pavel Tsekov <pt...@sy...> wrote: > >Add a erronous configuration line in your > >config file and start golded+. What you'll > >see (I'm running Linux) is a black screen and > >nothing much - press a key and you'll see > >the main screen :) > > > >Now I fired golded+ throuhg gdb and stepping > >I found the place where it hangs: > > > >Line 721, geinit.cpp > > > > if(cfgerrors) { > > std::cout << "* Total CFG errors found: " << cfgerrors > > << ". Press almost any key to continue." << std::endl; > > kbclear(); > > waitkey(); > > } > > Yep, that's an old bug, but it is hard to fix it. There's much more places where std::cout used for errors/warnings printing out. Seems like the best way to fix it is to create some kind of class which will acts the same way as iostream but will acts through the curses after it's initialization. I'll look further into this then :) > > >1. If possible do the config file processing before > >any call to ncurses routines - ie create GVid > >instance after all issues with the config file > >are settled. > > ncurses initialized in GKbd as well, so this will not solve the problem :-( > > >2. Replace the printing to std::cout with a > >simple ncurses Yes/No message box which informs > >the user of the situation. > > What about other error messages? Though... we can print them into log :-) The point is if this messages need to be printed to the user or they are just messages which can be safely passed to the log file. In the case I described above, it's important for the user to see the message since otherwise she/he can draw the wrong decision that this is some kind of bug or whatever else :) |