From: Stephen t. <st...@to...> - 2004-09-19 04:10:28
|
==20234== Conditional jump or move depends on uninitialised value(s) ==20234== at 0x806F7FA: mediamark_duplicate_alternates (mediamark.c:250) ==20234== by 0x805342F: gui_set_current_mmk (actions.c:1571) ==20234== by 0x807C5E9: mrl_play (mrl_browser.c:437) ==20234== by 0x80CDACF: mrlbrowser_select_mrl (mrlbrowser.c:843) Looking at line 250 there is a problem that s_mmk->alternates is not intialized. I agree that the intent of this is to say if the any of these pointers are not set we do not do the "if" statement. gdb) list 245 mmk->alternates = alt; 246 247 } 248 } 249 void mediamark_duplicate_alternates(mediamark_t *s_mmk, mediamark_t *d_mmk) { 250 if(s_mmk && s_mmk->alternates && d_mmk) { 251 alternate_t *alt; 252 253 if((alt = s_mmk->alternates)) { 254 alternate_t *c_alt, *p_alt = NULL, *t_alt = NULL; (gdb) print s_mmk $1 = (mediamark_t *) 0x52bf9200 (gdb) print s_mmk->alternates $2 = (alternate_t *) 0x0 (gdb) print d_mmk $3 = (mediamark_t *) 0x1beab3c8 (gdb) info thread (gdb) bt #0 0x0806f7fa in mediamark_duplicate_alternates (s_mmk=0x52bf9200, d_mmk=0x1beab3c8) at mediamark.c:250 #1 0x08053430 in gui_set_current_mmk (mmk=0x52bf9200) at actions.c:1571 #2 0x0807c5ea in mrl_play (w=0x0, data=0x8, mrl=0x1cd33e98) at mrl_browser.c:437 #3 0x080cdad0 in mrlbrowser_select_mrl (private_data=0x208c5e78, j=8, add_callback=0, play_callback=1) at mrlbrowser.c:843 #4 0x080cdb96 in mrlbrowser_play (w=0x1bed0f10, data=0x208c5e78) at mrlbrowser.c:868 #5 0x080b1efc in notify_click_button (w=0x1bed0f10, button=1, bUp=1, x=53, y=225) at button.c:184 #6 0x080b1fc2 in notify_event (w=0x1bed0f10, event=0x52bfa440, result=0x52bfa438) at button.c:217 #7 0x080d6b94 in xitk_click_notify_widget_list (wl=0x1bf57400, x=53, y=225, button=1, bUp=1) at widget.c:1100 #8 0x080e06d7 in xitk_xevent_notify (event=0x52bfa920) at xitk.c:1560 #9 0x080e1509 in xitk_run (cb=0x805b781 <on_start>, data=0x52bfbad8) at xitk.c:1868 #10 0x0805bd6d in gui_run (session_opts=0x0) at event.c:1778 #11 0x0806f021 in main (argc=1, argv=0x52bfdeb4) at main.c:2276 In the code in actions.c at line 1562 we check to see if mmk is set that we copy the values of mmk into gGui->mmk. Well we copy the mmk->got_alternate value to gGui->mmk.got_alternate. What happens if that is set to 0 why do we then call mediamark_duplicate_alternates (mmk, &(gGui->mmk))? By the way what are the acceptable values of mediamark_t got_alternate integer? -------- WORKAROUND --------- action.c: after line 1570 if (mmk->got_alternate == 1) { mediamark_duplicate_alternates(mmk, &(gGui->mmk)); } else { gGui->mmk.alternates = NULL; gGui->mmk.cur_alt = NULL; } Stephen -- Email: st...@to... |