X-Git-Url: https://jxself.org/git/?p=open-adventure.git;a=blobdiff_plain;f=main.c;h=e35851bc19e3de4592e97ef93d53ec5eb1452ffd;hp=0fd81a391ee0201e1d8d32398b782533e9d3dc21;hb=1954c04cccb983e1e91a7dc2e45132c24bfa2570;hpb=ff6a816e5f43ba542b98b79d7eea89d2bce97ee2 diff --git a/main.c b/main.c index 0fd81a3..e35851b 100644 --- a/main.c +++ b/main.c @@ -1124,17 +1124,17 @@ Lclosecheck: if (command.id1 == ENTER && command.id2 != WORD_NOT_FOUND && command.id2 != WORD_EMPTY) { command.id1 = command.id2; command.type1 = command.type2; - strncpy(command.raw1, command.raw2, LINESIZE + 1); + strncpy(command.raw1, command.raw2, LINESIZE - 1); command.id2 = WORD_EMPTY; command.type2 = NO_WORD_TYPE; - strncpy(command.raw2, "", LINESIZE + 1); + strncpy(command.raw2, "", LINESIZE - 1); } else { if (!((command.id1 != WATER && command.id1 != OIL) || (command.id2 != PLANT && command.id2 != DOOR))) { if (AT(command.id2)) { command.id2 = POUR; command.type2 = ACTION; - strncpy(command.raw2, "POUR", LINESIZE + 1); + strncpy(command.raw2, "POUR", LINESIZE - 1); command.wd2 = token_to_packed("POUR"); } } @@ -1142,7 +1142,7 @@ Lclosecheck: { command.id1 = CARRY; command.type1 = ACTION; - strncpy(command.raw2, "CATCH", LINESIZE + 1); + strncpy(command.raw2, "CATCH", LINESIZE - 1); command.wd1 = token_to_packed("CATCH"); } } @@ -1151,7 +1151,7 @@ Lookup: if (++game.iwest == 10) rspeak(W_IS_WEST); } - if (strncasecmp(command.raw1, "go", sizeof("go")) == 0 && !wordempty(command.wd2)) { + if (strncasecmp(command.raw1, "go", sizeof("go")) == 0 && command.id2 != WORD_EMPTY) { if (++game.igo == 10) rspeak(GO_UNNEEDED); } @@ -1169,18 +1169,18 @@ Lookup: switch (type) { case NO_WORD_TYPE: // FIXME: treating NO_WORD_TYPE as a motion word is confusing case MOTION: - playermove(defn); + playermove(command.id1); return true; case OBJECT: command.part = unknown; - command.obj = defn; + command.obj = command.id1; break; case ACTION: command.part = intransitive; command.verb = defn; break; case SPECIAL: - speak(specials[defn].message); + speak(specials[command.id1].message); goto Lclearobj; default: BUG(VOCABULARY_TYPE_N_OVER_1000_NOT_BETWEEN_0_AND_3); // LCOV_EXCL_LINE