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