LCDproc development and user support list

Text archives Help


[Fwd: Re: [Lcdproc] lcdproc-0.5.0 segfaults]


Chronological Thread 
  • From: peter AT adpm.de (Peter Marschall)
  • Subject: [Fwd: Re: [Lcdproc] lcdproc-0.5.0 segfaults]
  • Date: Fri May 5 16:48:01 2006

Hi andrew,

committted to CVS (both devel and stable branch)

Thanks
Peter

On Thursday, 4. May 2006 19:46, Andrew Foss wrote:
> lcdproc folks,
>
> attached is a fix for clients that set a custom_main_menu. With this the
> menu_destroy routine sets custom_main_menu = NULL, if the menu being
> destroyed is the same as custom_main_menu and appears to fix the crash
> that Laurent was seeing.
>
> If someone had the time/interest to review and commit?
>
> thanks,
> andrew
>
> -------- Original Message --------
> Subject: Re: [Lcdproc] lcdproc-0.5.0 segfaults
> Date: Thu, 04 May 2006 19:32:33 +0200
> From: Laurent B.
> <lorijho AT yes.lu>
> To: Andrew Foss
> <a.foss AT f5.com>
> References:
> <B8ECF7C8B6783140ABC787DC9794BAFD0A3B32 AT exchfour.olympus.f5net.com>
> <445A2B55.9070908 AT yes.lu>
>
> <445A2E81.1090805 AT f5.com>
> <445A3478.5000801 AT yes.lu>
>
> <445A3844.7020403 AT f5.com>
>
>
>
> You solved it! Now it works.
> Great job fixing that so quickly.
>
> Laurent Baum
>
> Andrew Foss wrote:
> > Sorry, typo'd put an "=" where I need "==", c++ I wouldn't make these
> > mistakes:-)
> >
> > Also, upon looking forther I've moved it to the menu_destroy, instead
> > of the menuitem_destroy...
> >
> > here it is corrected.
> >
> > andrew
> >
> > Laurent B. wrote:
> >> Andrew, I'm afraid the patch brakes the functionality of LCDd. Now
> >> upon calling menu_set_main nothing changes.
> >> menu_set_main "", menu_set_main "<a_client_menu_id>" or
> >> menu_set_main "_main_" do nothing.
> >> I'll give you a concrete example...
> >> client sends: menu_set_main "", which should set the client menu as
> >> the default one (as advertised in the dev doc of lcdproc), results in
> >> having 2 menu entries upon pressing menu key.
> >> ### LCDproc Menu ####
> >>
> >> >Options >
> >>
> >> client_menu >
> >>
> >> So menu_set_main has no use with this patch, but at least LCDd
> >> doesn't crash...
> >>
> >> Laurent
> >>
> >> Andrew Foss wrote:
> >>> Laurent,
> >>>
> >>> here's a patch file that might work, if you can test it, I cannot
> >>> right now.
> >>>
> >>> from the server directory do the following command, assuming this
> >>> file is in your ~ directory
> >>>
> >>> patch -p1 < ~/lcdproccustommainmenu.patch
> >>>
> >>> if it works, we can submit it to the project.
> >>>
> >>> thanks,
> >>> andrew
> >>>
> >>> Laurent B. wrote:
> >>>> Hey as long as you're happy with what you do...
> >>>> Diversity is a good thing!
> >>>>
> >>>> L
> >>>>
> >>>> Andrew Foss wrote:
> >>>>> I'm just the opposite. I can't get my mind around the c++ logic in
> >>>>> header files:-)
> >>>
> >>> -----------------------------------------------------------------------
> >>>-
> >>>
> >>>
> >>> --- server/menu.c.orig 2006-05-04 09:24:56.000000000 -0700
> >>> +++ server/menu.c 2006-05-04 09:28:09.000000000 -0700
> >>> @@ -39,6 +39,9 @@
> >>> #include "screen.h"
> >>> #include "widget.h"
> >>>
> >>> +
> >>> +extern Menu * custom_main_menu;
> >>> +
> >>> /** Basicly a patched version of LL_GetByIndex() that ignores hidden
> >>> * entries completely. (But it takes a menu as an argument.) */
> >>> static void *
> >>> @@ -172,6 +175,9 @@
> >>> if ((menu == NULL) || (item == NULL))
> >>> return;
> >>>
> >>> + if (custom_main_menu = menu)
> >>> + custom_main_menu = NULL;
> >>> +
> >>> /* Find the item */
> >>> for (item2 = LL_GetFirst(menu->data.menu.contents), i = 0;
> >>> item2 != NULL;
> >
> > ------------------------------------------------------------------------
> >
> > --- server/menu.c.orig 2006-05-04 10:09:37.000000000 -0700
> > +++ server/menu.c 2006-05-04 10:11:15.000000000 -0700
> > @@ -39,6 +39,9 @@
> > #include "screen.h"
> > #include "widget.h"
> >
> > +
> > +extern Menu * custom_main_menu;
> > +
> > /** Basicly a patched version of LL_GetByIndex() that ignores hidden
> > * entries completely. (But it takes a menu as an argument.) */
> > static void *
> > @@ -137,6 +140,9 @@
> > if (menu == NULL)
> > return;
> >
> > + if (custom_main_menu == menu)
> > + custom_main_menu = NULL;
> > +
> > menu_destroy_all_items (menu);
> > LL_Destroy (menu->data.menu.contents);
> > menu->data.menu.contents = NULL;

--
Peter Marschall
peter AT adpm.de




Archive powered by MHonArc 2.6.18.

Top of page