summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/winDde.test4
-rw-r--r--win/tclWinDde.c5
2 files changed, 5 insertions, 4 deletions
diff --git a/tests/winDde.test b/tests/winDde.test
index d4a3a79..729b05e 100644
--- a/tests/winDde.test
+++ b/tests/winDde.test
@@ -216,13 +216,13 @@ test winDde-4.4 {DDE eval remotely} {stdio win dde} {
test winDde-5.1 {check for bad arguments} -constraints {win dde} -body {
dde execute "" "" "" ""
-} -returnCodes error -result {ambiguous option "": must be -async or -binary}
+} -returnCodes error -result {wrong # args: should be "dde execute ?-async? ?-binary? serviceName topicName value"}
test winDde-5.2 {check for bad arguments} -constraints {win dde} -body {
dde execute "" "" ""
} -returnCodes error -result {cannot execute null data}
test winDde-5.3 {check for bad arguments} -constraints {win dde} -body {
dde execute -foo "" "" ""
-} -returnCodes error -result {bad option "-foo": must be -async or -binary}
+} -returnCodes error -result {wrong # args: should be "dde execute ?-async? ?-binary? serviceName topicName value"}
test winDde-5.4 {DDE eval bad arguments} -constraints {win dde} -body {
dde eval "" "foo"
} -returnCodes error -result {invalid service name ""}
diff --git a/win/tclWinDde.c b/win/tclWinDde.c
index 83c2aa3..11e713b 100644
--- a/win/tclWinDde.c
+++ b/win/tclWinDde.c
@@ -1253,9 +1253,9 @@ DdeObjCmd(
} else if (objc >= 6 && objc <= 7) {
firstArg = objc - 3;
for (i = 2; i < firstArg; i++) {
- if (Tcl_GetIndexFromObj(interp, objv[2], ddeExecOptions,
+ if (Tcl_GetIndexFromObj(interp, objv[i], ddeExecOptions,
"option", 0, &argIndex) != TCL_OK) {
- return TCL_ERROR;
+ goto wrongDdeExecuteArgs;
}
if (argIndex == DDE_EXEC_ASYNC) {
async = 1;
@@ -1266,6 +1266,7 @@ DdeObjCmd(
break;
}
/* otherwise... */
+ wrongDdeExecuteArgs:
Tcl_WrongNumArgs(interp, 2, objv,
"?-async? ?-binary? serviceName topicName value");
return TCL_ERROR;