freesci-develop
[Top][All Lists]
Advanced

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

[freesci-develop] address@hidden: [PATCH] Freesci bug]


From: Lars Skovlund
Subject: [freesci-develop] address@hidden: [PATCH] Freesci bug]
Date: Tue, 6 May 2003 21:08:20 +0200
User-agent: Mutt/1.5.3i

----- Forwarded message from Mika Liljeberg <address@hidden> -----

Envelope-to: address@hidden
Delivery-date: Mon, 05 May 2003 20:36:33 +0200
Original-Recipient: rfc822;address@hidden
Subject: [PATCH] Freesci bug
From: Mika Liljeberg <address@hidden>
To: address@hidden
Organization: 
X-Spam-Status: No, hits=-7.8 required=5.0
        tests=PATCH_UNIFIED_DIFF,USER_AGENT_XIMIAN,X_AUTH_WARNING
        autolearn=ham version=2.53
X-Spam-Level: 
X-Spam-Checker-Version: SpamAssassin 2.53 (1.174.2.15-2003-03-30-exp)

Hi Lars,

The patch below fixes a bug that was introduced somewhere between
versions 0.3.2 and 0.3.3. The bug crashes LSL2 in room 42. The bug is
pretty obvious. The patch is against current CVS head as of today. The
same bug appears in the glutton branch.

On a similar vein, freesci seems to have some issues with memory
management. I added a line of code in heap_free() to fill the freed
memory block with zeroes. This seems to cause a lot of problems,
particularly with the graphics code in kgraphics.c. It looks like some
objects are frequently referenced after they have been deleted.

Cheers,
        
        MikaL

Index: src/engine/kgraphics.c
===================================================================
RCS file: /var/cvs/freesci/freesci/src/engine/kgraphics.c,v
retrieving revision 1.171
diff -u -r1.171 kgraphics.c
--- src/engine/kgraphics.c      30 Jan 2003 19:42:07 -0000      1.171
+++ src/engine/kgraphics.c      4 May 2003 19:00:08 -0000
@@ -1860,11 +1860,9 @@
                }
 
                widget = _k_make_dynview_obj(s, obj, options, sequence_nr--, 
funct_nr, argc, argp);
-               if (widget) {
+               if (widget)
                        GFX_ASSERT((*widget_list)->add(GFXWC(*widget_list), 
GFXW(widget)));
-
-                       node = UGET_HEAP(node + LIST_NEXT_NODE); /* Next node */
-               }
+               node = UGET_HEAP(node + LIST_NEXT_NODE); /* Next node */
        }
 
 





----- End forwarded message -----




reply via email to

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