Revision: 56142
          http://sourceforge.net/p/brlcad/code/56142
Author:   brlcad
Date:     2013-07-19 20:47:18 +0000 (Fri, 19 Jul 2013)
Log Message:
-----------
redo the error messages (because a couple weren't correct) and add one more 
validity check to make sure we don't read too many argv

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

Modified: brlcad/trunk/src/libged/comb.c
===================================================================
--- brlcad/trunk/src/libged/comb.c      2013-07-19 20:13:27 UTC (rev 56141)
+++ brlcad/trunk/src/libged/comb.c      2013-07-19 20:47:18 UTC (rev 56142)
@@ -77,24 +77,32 @@
 
     /* Get operation and solid name for each solid */
     for (i = 2; i < argc; i += 2) {
+       /* they come in pairs */
+       if (i+1 >= argc) {
+           bu_vls_printf(gedp->ged_result_str, "Invalid syntax near '%s', 
ignored.  Expecting object name after operator.\n", argv[i+1]);
+           return GED_ERROR;
+       }
+
+       /* ops are 1-char */
        if (argv[i][1] != '\0') {
-           bu_vls_printf(gedp->ged_result_str, "Invalid Operation: %s already 
exists: %s\n", argv[i], argv[i+1]);
+           bu_vls_printf(gedp->ged_result_str, "Invalid operation '%s' before 
object '%s'\n", argv[i], argv[i+1]);
            continue;
        }
        oper = argv[i][0];
-       if ((dp = db_lookup(gedp->ged_wdbp->dbip,  argv[i+1], LOOKUP_NOISY)) == 
RT_DIR_NULL) {
-           bu_vls_printf(gedp->ged_result_str, "Invalid Syntax %s\n", 
argv[i+1]);
+       if (oper != WMOP_UNION && oper != WMOP_SUBTRACT && oper != 
WMOP_INTERSECT) {
+           bu_vls_printf(gedp->ged_result_str, "Unknown operator '%c' 
encountered, invalid syntax.\n", oper);
            continue;
        }
 
-       if (oper != WMOP_UNION && oper != WMOP_SUBTRACT && oper != 
WMOP_INTERSECT) {
-           bu_vls_printf(gedp->ged_result_str, "Invalid Operation: %c already 
exists: %s\n",
-                         oper, dp->d_namep);
+       /* object name comes after op */
+       if ((dp = db_lookup(gedp->ged_wdbp->dbip,  argv[i+1], LOOKUP_NOISY)) == 
RT_DIR_NULL) {
+           bu_vls_printf(gedp->ged_result_str, "Object '%s'does not exist.\n", 
argv[i+1]);
            continue;
        }
 
+       /* add it to the comb immediately */
        if (_ged_combadd(gedp, dp, comb_name, 0, oper, 0, 0) == RT_DIR_NULL) {
-           bu_vls_printf(gedp->ged_result_str, "error in combadd");
+           bu_vls_printf(gedp->ged_result_str, "Error adding '%s' (with op 
'%c') to '%s'\n", dp->d_namep, oper, comb_name);
            return GED_ERROR;
        }
     }

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


------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics
Get end-to-end visibility with application monitoring from AppDynamics
Isolate bottlenecks and diagnose root cause in seconds.
Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to