emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Problem report #33


From: Kim F. Storm
Subject: Re: Problem report #33
Date: Sun, 14 May 2006 13:03:29 +0200
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.0.50 (gnu/linux)

Dan Nicolaescu <address@hidden> writes:

> This one reappeared after the last xterm.c checkin.
> Is it OK not to check f for NULL here?
>
> CID: 33
> Checker: NULL_RETURNS (help)
> File: base/src/emacs/src/xterm.c
> Function: handle_one_xevent
> Description: Dereferencing NULL value "f"
>
> 5801  #ifdef HACK_EDITRES
> 5802          if (event.xclient.message_type
> 5803              == dpyinfo->Xatom_editres)
> 5804            {
>
> Event returned_null: Function "x_any_window_to_frame" returned NULL value 
> (checked 8 out of 9 times) [model]
> Event var_assigned: Variable "f" assigned to NULL return value from 
> "x_any_window_to_frame"
> Also see events: [var_assigned][dereference]
>
> 5805              f = x_any_window_to_frame (dpyinfo, event.xclient.window);
>
> Event dereference: Dereferencing NULL value "f"
> Also see events: [returned_null][var_assigned]
>
> 5806              _XEditResCheckMessages (f->output_data.x->widget, NULL,
> 5807                                      &event, NULL);
> 5808              goto done;
> 5809            }

Looks like a real bug -- and there's another incident a few lines below.
Here is a "fix":

*** xterm.c     14 May 2006 02:24:31 +0200      1.911
--- xterm.c     14 May 2006 13:02:15 +0200      
***************
*** 5803,5808 ****
--- 5803,5810 ----
            == dpyinfo->Xatom_editres)
            {
            f = x_any_window_to_frame (dpyinfo, event.xclient.window);
+           if (!f)
+             goto OTHER;
              _XEditResCheckMessages (f->output_data.x->widget, NULL,
                                      &event, NULL);
            goto done;
***************
*** 5820,5825 ****
--- 5822,5829 ----
                 images, only, which should have 1 page.  */
              Pixmap pixmap = (Pixmap) event.xclient.data.l[1];
            f = x_window_to_frame (dpyinfo, event.xclient.window);
+           if (!f)
+             goto OTHER;
              x_kill_gs_process (pixmap, f);
              expose_frame (f, 0, 0, 0, 0);
            goto done;


-- 
Kim F. Storm <address@hidden> http://www.cua.dk





reply via email to

[Prev in Thread] Current Thread [Next in Thread]