OSDN Git Service

quark_str(1)として""を最初に定義しておき、
authormogami <mogami@0568b783-4c39-0410-ac80-bf13821ea2a2>
Thu, 1 Jan 2004 17:15:14 +0000 (17:15 +0000)
committermogami <mogami@0568b783-4c39-0410-ac80-bf13821ea2a2>
Thu, 1 Jan 2004 17:15:14 +0000 (17:15 +0000)
quark_add()は失敗したら必ず1を返すようにした。

src/externs.h
src/init2.c
src/util.c

index bf194df..30999b0 100644 (file)
@@ -1239,6 +1239,7 @@ extern errr macro_add(cptr pat, cptr act);
 extern sint macro_find_exact(cptr pat);
 extern char inkey(void);
 extern cptr quark_str(s16b num);
+extern void quark_init(void);
 extern s16b quark_add(cptr str);
 extern s16b message_num(void);
 extern cptr message_str(int age);
index 622eea4..b296fef 100644 (file)
@@ -1627,7 +1627,7 @@ static errr init_other(void)
        C_MAKE(macro__buf, 1024, char);
 
        /* Quark variables */
-       C_MAKE(quark__str, QUARK_MAX, cptr);
+       quark_init();
 
        /* Message variables */
        C_MAKE(message__ptr, MESSAGE_MAX, u16b);
index 0d25aa8..76ecb73 100644 (file)
@@ -2216,6 +2216,22 @@ char inkey(void)
  */
 
 /*
+ * Initialize the quark array
+ */
+void quark_init(void)
+{
+       /* Quark variables */
+       C_MAKE(quark__str, QUARK_MAX, cptr);
+
+       /* Prepare first quark, which is used when quark_add() is failed */
+       quark__str[1] = string_make("");
+
+       /* There is one quark (+ NULL) */
+       quark__num = 2;
+}
+
+
+/*
  * Add a new "quark" to the set of quarks.
  */
 s16b quark_add(cptr str)
@@ -2229,8 +2245,8 @@ s16b quark_add(cptr str)
                if (streq(quark__str[i], str)) return (i);
        }
 
-       /* Paranoia -- Require room */
-       if (quark__num == QUARK_MAX) return (0);
+       /* Return "" when no room is available */
+       if (quark__num == QUARK_MAX) return 1;
 
        /* New maximal quark */
        quark__num = i + 1;
@@ -2251,7 +2267,7 @@ cptr quark_str(s16b i)
        cptr q;
 
        /* Verify */
-       if ((i < 0) || (i >= quark__num)) i = 0;
+       if ((i < 1) || (i >= quark__num)) i = 1;
 
        /* Access the quark */
        q = quark__str[i];