Re: [PATCH 4/5] parser: free val.str after xf86getBoolValue
On Nov 1, 2011 6:14 AM, wrote: > > From: Paulo Zanoni > > After we convert the value to a boolean, we discard the string. > > This is just one example: > > 3 bytes in 1 blocks are definitely lost in loss record 5 of 657 > at 0x4C2779D: malloc (vgpreload_memcheck-amd64-linux.so) > by 0x4D744D: xf86getToken (scan.c:400) > by 0x4D75F1: xf86getSubToken (scan.c:462) > by 0x4DB3E0: xf86parseInputClassSection (InputClass.c:189) > by 0x4D664C: xf86readConfigFile (read.c:184) > by 0x490556: xf86HandleConfigFile (xf86Config.c:2360) > by 0x49AA77: InitOutput (xf86Init.c:365) > by 0x425A7A: main (main.c:204) > > Signed-off-by: Paulo Zanoni I guess I thought the parser was gonna clean those up. Reviewed-by: Dan Nicholson ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
Re: [PATCH 4/5] parser: free val.str after xf86getBoolValue
On Tue, Nov 01, 2011 at 11:12:37AM -0200, przan...@gmail.com wrote: > From: Paulo Zanoni > > After we convert the value to a boolean, we discard the string. > > This is just one example: > > 3 bytes in 1 blocks are definitely lost in loss record 5 of 657 >at 0x4C2779D: malloc (vgpreload_memcheck-amd64-linux.so) >by 0x4D744D: xf86getToken (scan.c:400) >by 0x4D75F1: xf86getSubToken (scan.c:462) >by 0x4DB3E0: xf86parseInputClassSection (InputClass.c:189) >by 0x4D664C: xf86readConfigFile (read.c:184) >by 0x490556: xf86HandleConfigFile (xf86Config.c:2360) >by 0x49AA77: InitOutput (xf86Init.c:365) >by 0x425A7A: main (main.c:204) > > Signed-off-by: Paulo Zanoni Reviewed-by: Peter Hutterer > --- > hw/xfree86/parser/InputClass.c |6 ++ > 1 files changed, 6 insertions(+), 0 deletions(-) > > diff --git a/hw/xfree86/parser/InputClass.c b/hw/xfree86/parser/InputClass.c > index 3f80170..1128995 100644 > --- a/hw/xfree86/parser/InputClass.c > +++ b/hw/xfree86/parser/InputClass.c > @@ -182,6 +182,7 @@ xf86parseInputClassSection(void) > Error(QUOTE_MSG, "MatchIsKeyboard"); > ptr->is_keyboard.set = xf86getBoolValue(&ptr->is_keyboard.val, > val.str); > +free(val.str); > if (!ptr->is_keyboard.set) > Error(BOOL_MSG, "MatchIsKeyboard"); > break; > @@ -190,6 +191,7 @@ xf86parseInputClassSection(void) > Error(QUOTE_MSG, "MatchIsPointer"); > ptr->is_pointer.set = xf86getBoolValue(&ptr->is_pointer.val, > val.str); > +free(val.str); > if (!ptr->is_pointer.set) > Error(BOOL_MSG, "MatchIsPointer"); > break; > @@ -198,6 +200,7 @@ xf86parseInputClassSection(void) > Error(QUOTE_MSG, "MatchIsJoystick"); > ptr->is_joystick.set = xf86getBoolValue(&ptr->is_joystick.val, > val.str); > +free(val.str); > if (!ptr->is_joystick.set) > Error(BOOL_MSG, "MatchIsJoystick"); > break; > @@ -206,6 +209,7 @@ xf86parseInputClassSection(void) > Error(QUOTE_MSG, "MatchIsTablet"); > ptr->is_tablet.set = xf86getBoolValue(&ptr->is_tablet.val, >val.str); > +free(val.str); > if (!ptr->is_tablet.set) > Error(BOOL_MSG, "MatchIsTablet"); > break; > @@ -214,6 +218,7 @@ xf86parseInputClassSection(void) > Error(QUOTE_MSG, "MatchIsTouchpad"); > ptr->is_touchpad.set = xf86getBoolValue(&ptr->is_touchpad.val, > val.str); > +free(val.str); > if (!ptr->is_touchpad.set) > Error(BOOL_MSG, "MatchIsTouchpad"); > break; > @@ -222,6 +227,7 @@ xf86parseInputClassSection(void) > Error(QUOTE_MSG, "MatchIsTouchscreen"); > ptr->is_touchscreen.set = > xf86getBoolValue(&ptr->is_touchscreen.val, > val.str); > +free(val.str); > if (!ptr->is_touchscreen.set) > Error(BOOL_MSG, "MatchIsTouchscreen"); > break; > -- > 1.7.7 > ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
[PATCH 4/5] parser: free val.str after xf86getBoolValue
From: Paulo Zanoni After we convert the value to a boolean, we discard the string. This is just one example: 3 bytes in 1 blocks are definitely lost in loss record 5 of 657 at 0x4C2779D: malloc (vgpreload_memcheck-amd64-linux.so) by 0x4D744D: xf86getToken (scan.c:400) by 0x4D75F1: xf86getSubToken (scan.c:462) by 0x4DB3E0: xf86parseInputClassSection (InputClass.c:189) by 0x4D664C: xf86readConfigFile (read.c:184) by 0x490556: xf86HandleConfigFile (xf86Config.c:2360) by 0x49AA77: InitOutput (xf86Init.c:365) by 0x425A7A: main (main.c:204) Signed-off-by: Paulo Zanoni --- hw/xfree86/parser/InputClass.c |6 ++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/hw/xfree86/parser/InputClass.c b/hw/xfree86/parser/InputClass.c index 3f80170..1128995 100644 --- a/hw/xfree86/parser/InputClass.c +++ b/hw/xfree86/parser/InputClass.c @@ -182,6 +182,7 @@ xf86parseInputClassSection(void) Error(QUOTE_MSG, "MatchIsKeyboard"); ptr->is_keyboard.set = xf86getBoolValue(&ptr->is_keyboard.val, val.str); +free(val.str); if (!ptr->is_keyboard.set) Error(BOOL_MSG, "MatchIsKeyboard"); break; @@ -190,6 +191,7 @@ xf86parseInputClassSection(void) Error(QUOTE_MSG, "MatchIsPointer"); ptr->is_pointer.set = xf86getBoolValue(&ptr->is_pointer.val, val.str); +free(val.str); if (!ptr->is_pointer.set) Error(BOOL_MSG, "MatchIsPointer"); break; @@ -198,6 +200,7 @@ xf86parseInputClassSection(void) Error(QUOTE_MSG, "MatchIsJoystick"); ptr->is_joystick.set = xf86getBoolValue(&ptr->is_joystick.val, val.str); +free(val.str); if (!ptr->is_joystick.set) Error(BOOL_MSG, "MatchIsJoystick"); break; @@ -206,6 +209,7 @@ xf86parseInputClassSection(void) Error(QUOTE_MSG, "MatchIsTablet"); ptr->is_tablet.set = xf86getBoolValue(&ptr->is_tablet.val, val.str); +free(val.str); if (!ptr->is_tablet.set) Error(BOOL_MSG, "MatchIsTablet"); break; @@ -214,6 +218,7 @@ xf86parseInputClassSection(void) Error(QUOTE_MSG, "MatchIsTouchpad"); ptr->is_touchpad.set = xf86getBoolValue(&ptr->is_touchpad.val, val.str); +free(val.str); if (!ptr->is_touchpad.set) Error(BOOL_MSG, "MatchIsTouchpad"); break; @@ -222,6 +227,7 @@ xf86parseInputClassSection(void) Error(QUOTE_MSG, "MatchIsTouchscreen"); ptr->is_touchscreen.set = xf86getBoolValue(&ptr->is_touchscreen.val, val.str); +free(val.str); if (!ptr->is_touchscreen.set) Error(BOOL_MSG, "MatchIsTouchscreen"); break; -- 1.7.7 ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel