Revision: 58296
          http://sourceforge.net/p/brlcad/code/58296
Author:   bob1961
Date:     2013-10-25 17:10:32 +0000 (Fri, 25 Oct 2013)
Log Message:
-----------
Updated ged_reopen to properly set the rt material head. This would have 
impacted Archer and its ilk.

Modified Paths:
--------------
    brlcad/trunk/src/libged/open.c

Modified: brlcad/trunk/src/libged/open.c
===================================================================
--- brlcad/trunk/src/libged/open.c      2013-10-25 13:27:20 UTC (rev 58295)
+++ brlcad/trunk/src/libged/open.c      2013-10-25 17:10:32 UTC (rev 58296)
@@ -36,7 +36,7 @@
 int
 ged_reopen(struct ged *gedp, int argc, const char *argv[])
 {
-    struct db_i *dbip;
+    struct db_i *new_dbip;
     static const char *usage = "[filename]";
 
     GED_CHECK_DATABASE_OPEN(gedp, GED_ERROR);
@@ -54,12 +54,25 @@
     /* set database filename */
     if (argc == 2) {
        char *av[2];
+       struct db_i *old_dbip = gedp->ged_wdbp->dbip;
+       struct mater *old_materp = rt_material_head();
+        struct mater *new_materp;
 
-       if ((dbip = _ged_open_dbip(argv[1], 0)) == DBI_NULL) {
+       rt_new_material_head(MATER_NULL);
+
+       if ((new_dbip = _ged_open_dbip(argv[1], 0)) == DBI_NULL) {
+           /* Restore RT's material head */
+           rt_new_material_head(old_materp);
+
            bu_vls_printf(gedp->ged_result_str, "ged_reopen: failed to open 
%s\n", argv[1]);
            return GED_ERROR;
        }
 
+       new_materp = rt_material_head();
+
+       gedp->ged_wdbp->dbip = old_dbip;
+        rt_new_material_head(old_materp);
+
        av[0] = "zap";
        av[1] = (char *)0;
        ged_zap(gedp, 1, (const char **)av);
@@ -67,7 +80,8 @@
        /* close current database */
        db_close(gedp->ged_wdbp->dbip);
 
-       gedp->ged_wdbp->dbip = dbip;
+       gedp->ged_wdbp->dbip = new_dbip;
+       rt_new_material_head(new_materp);
 
        bu_vls_printf(gedp->ged_result_str, "%s", 
gedp->ged_wdbp->dbip->dbi_filename);
        return GED_OK;

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


------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60135991&iu=/4140/ostg.clktrk
_______________________________________________
BRL-CAD Source Commits mailing list
brlcad-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to