]> git.pond.sub.org Git - empserver/commitdiff
Fix distribute aborting at prompt for second argument
authorMarkus Armbruster <armbru@pond.sub.org>
Fri, 18 Jul 2008 22:10:44 +0000 (18:10 -0400)
committerMarkus Armbruster <armbru@pond.sub.org>
Mon, 21 Jul 2008 11:50:13 +0000 (07:50 -0400)
Before failing the command, the old code attempted to change the
current sector's distribution center to the last one used, which might
have been uninitialized coordinates.  If lucky, the coordinates were
invalid, and the attempt oopsed and did nothing.

src/lib/commands/dist.c

index 6cdd7b523806a84680eaf4c17ecf4843d00a2540..b4124b51d8d993389d6203167206c7a680ee39db 100644 (file)
@@ -53,7 +53,7 @@ dist(void)
 
     if (!snxtsct(&nstr, player->argp[1]))
        return RET_SYN;
 
     if (!snxtsct(&nstr, player->argp[1]))
        return RET_SYN;
-    while (!player->aborted && nxtsct(&nstr, &sect)) {
+    while (nxtsct(&nstr, &sect)) {
        if (!player->owner)
            continue;
        pr("%s at %s ", dchr[sect.sct_type].d_name,
        if (!player->owner)
            continue;
        pr("%s at %s ", dchr[sect.sct_type].d_name,
@@ -70,20 +70,18 @@ dist(void)
        } else
            pr("has no dist sector. \n");
        p = getstarg(player->argp[2], "Distribution sector? ", buf);
        } else
            pr("has no dist sector. \n");
        p = getstarg(player->argp[2], "Distribution sector? ", buf);
-       if (p && (*p == 0))
+       if (!p)
+           return RET_SYN;
+       if (!*p)
            continue;
            continue;
-
        if (!check_sect_ok(&sect))
            continue;
 
        if (!check_sect_ok(&sect))
            continue;
 
-       if (p && (*p != '.') && (*p != 'h') && (!sarg_xy(p, &dstx, &dsty)))
-           return RET_SYN;
-
-       if (p && ((*p == '.') || (*p == 'h'))) {
+       if (*p == '.' || *p == 'h') {
            dstx = sect.sct_x;
            dsty = sect.sct_y;
            dstx = sect.sct_x;
            dsty = sect.sct_y;
-       }
-
+       } else if (!sarg_xy(p, &dstx, &dsty))
+           return RET_SYN;
        if (!getsect(dstx, dsty, &dsect)) {
            pr("Bad sector.\n");
            return RET_FAIL;
        if (!getsect(dstx, dsty, &dsect)) {
            pr("Bad sector.\n");
            return RET_FAIL;