Revision: 41143
          http://brlcad.svn.sourceforge.net/brlcad/?rev=41143&view=rev
Author:   bob1961
Date:     2010-10-26 19:25:34 +0000 (Tue, 26 Oct 2010)

Log Message:
-----------
Added code to free memory in ged_obj.c:go_data_labels().

Modified Paths:
--------------
    brlcad/trunk/src/libtclcad/ged_obj.c

Modified: brlcad/trunk/src/libtclcad/ged_obj.c
===================================================================
--- brlcad/trunk/src/libtclcad/ged_obj.c        2010-10-26 19:22:03 UTC (rev 
41142)
+++ brlcad/trunk/src/libtclcad/ged_obj.c        2010-10-26 19:25:34 UTC (rev 
41143)
@@ -2742,6 +2742,13 @@
                const char **sub_av;
 
                if (Tcl_SplitList(go_current_gop->go_interp, av[i], &sub_ac, 
&sub_av) != TCL_OK) {
+                   /*XXX Need a macro for the following lines. Do something 
similar for the rest. */
+                   bu_free((genptr_t)gdlsp->gdls_labels, "data labels");
+                   bu_free((genptr_t)gdlsp->gdls_points, "data points");
+                   gdlsp->gdls_labels = (char **)0;
+                   gdlsp->gdls_points = (point_t *)0;
+                   gdlsp->gdls_num_labels = 0;
+
                    bu_vls_printf(&gedp->ged_result_str, "%s", 
Tcl_GetStringResult(go_current_gop->go_interp));
                    Tcl_Free((char *)av);
                    go_refresh_view(gdvp);
@@ -2749,6 +2756,13 @@
                }
 
                if (sub_ac != 2) {
+                   /*XXX Need a macro for the following lines. Do something 
similar for the rest. */
+                   bu_free((genptr_t)gdlsp->gdls_labels, "data labels");
+                   bu_free((genptr_t)gdlsp->gdls_points, "data points");
+                   gdlsp->gdls_labels = (char **)0;
+                   gdlsp->gdls_points = (point_t *)0;
+                   gdlsp->gdls_num_labels = 0;
+
                    bu_vls_printf(&gedp->ged_result_str, "Each list element 
must contain a label and a point (i.e. {{some label} {0 0 0}})");
                    Tcl_Free((char *)sub_av);
                    Tcl_Free((char *)av);
@@ -2762,6 +2776,7 @@
                           &gdlsp->gdls_points[i][Z]) != 3) {
                    bu_vls_printf(&gedp->ged_result_str, "bad data point - 
%s\n", sub_av[1]);
 
+                   /*XXX Need a macro for the following lines. Do something 
similar for the rest. */
                    bu_free((genptr_t)gdlsp->gdls_labels, "data labels");
                    bu_free((genptr_t)gdlsp->gdls_points, "data points");
                    gdlsp->gdls_labels = (char **)0;
@@ -3039,7 +3054,7 @@
        return BRLCAD_ERROR;
     }
 
-    if (sscanf(argv[3], "%d", &dindex) != 1)
+    if (sscanf(argv[3], "%d", &dindex) != 1 || dindex < 0)
        goto bad;
 
     if (argc == 5) {


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Nokia and AT&T present the 2010 Calling All Innovators-North America contest
Create new apps & games for the Nokia N8 for consumers in  U.S. and Canada
$10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing
Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store 
http://p.sf.net/sfu/nokia-dev2dev
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to