OSDN Git Service

セウ・゙・ノ、ホ(a)、ヌ。「roff_to_buf()、ヒナマ、ケtemp[]、ホ・オ・、・コ、ャツュ、熙コ、ヒ
authormogami <mogami@0568b783-4c39-0410-ac80-bf13821ea2a2>
Mon, 16 Dec 2002 09:26:19 +0000 (09:26 +0000)
committermogami <mogami@0568b783-4c39-0410-ac80-bf13821ea2a2>
Mon, 16 Dec 2002 09:26:19 +0000 (09:26 +0000)
・ッ・鬣テ・キ・螟キ、ニ、、、ソ・ミ・ース、タオ。」、オ、鬢ヒ・オ・、・コ、惞ヌナマ、ケ、隍ヲ、ヒ、キ、ソ。」

src/autopick.c
src/birth.c
src/bldg.c
src/cmd5.c
src/cmd6.c
src/externs.h
src/files.c
src/mind.c
src/object1.c
src/object2.c
src/util.c

index 040244f..348975b 100644 (file)
@@ -2940,7 +2940,7 @@ void do_cmd_edit_autopick(void)
 
                                describe_autopick(buf, entry);
 
-                               roff_to_buf(buf, 81, temp);
+                               roff_to_buf(buf, 81, temp, sizeof(temp));
                                t = temp;
                                for (i = 0; i< 2; i++)
                                {
index f74908f..8cbfd85 100644 (file)
@@ -2355,7 +2355,7 @@ static bool get_player_realms(void)
                put_str("                                   ", 4, 40);
                put_str("                                   ", 5, 40);
 
-               roff_to_buf(realm_jouhou[technic2magic(p_ptr->realm1)-1], 74, temp);
+               roff_to_buf(realm_jouhou[technic2magic(p_ptr->realm1)-1], 74, temp, sizeof(temp));
                t = temp;
                for (i = 0; i< 6; i++)
                {
@@ -2418,7 +2418,7 @@ else
                        put_str("                                   ", 4, 40);
                        put_str("                                   ", 5, 40);
 
-                       roff_to_buf(realm_jouhou[technic2magic(p_ptr->realm2)-1], 74, temp);
+                       roff_to_buf(realm_jouhou[technic2magic(p_ptr->realm2)-1], 74, temp, sizeof(temp));
                        t = temp;
                        for (i = 0; i< 6; i++)
                        {
@@ -3062,7 +3062,7 @@ static void get_history(void)
 
        {
        char temp[64*4];
-       roff_to_buf(s, 60, temp);
+       roff_to_buf(s, 60, temp, sizeof(temp));
        t = temp;
        for(i=0 ; i<4 ; i++){
             if(t[0]==0)break; 
@@ -5620,7 +5620,7 @@ static bool player_birth_aux(void)
 
                clear_from(10);
 
-               roff_to_buf(race_jouhou[p_ptr->prace], 74, temp);
+               roff_to_buf(race_jouhou[p_ptr->prace], 74, temp, sizeof(temp));
                t = temp;
 
                for (i = 0; i< 10; i++)
@@ -5655,7 +5655,7 @@ static bool player_birth_aux(void)
                if (!get_player_class()) return FALSE;
 
                clear_from(10);
-               roff_to_buf(class_jouhou[p_ptr->pclass], 74, temp);
+               roff_to_buf(class_jouhou[p_ptr->pclass], 74, temp, sizeof(temp));
                t = temp;
 
                for (i = 0; i< 9; i++)
@@ -5690,7 +5690,7 @@ static bool player_birth_aux(void)
                if (!get_player_seikaku()) return FALSE;
 
                clear_from(10);
-               roff_to_buf(seikaku_jouhou[p_ptr->pseikaku], 74, temp);
+               roff_to_buf(seikaku_jouhou[p_ptr->pseikaku], 74, temp, sizeof(temp));
                t = temp;
 
                for (i = 0; i< 6; i++)
@@ -6415,13 +6415,13 @@ void player_birth(void)
 
 void dump_yourself(FILE *fff)
 {
-       char temp[80*8];
+       char temp[80*10];
        int i;
        cptr t;
 
        if (!fff) return;
 
-       roff_to_buf(race_jouhou[p_ptr->prace], 78, temp);
+       roff_to_buf(race_jouhou[p_ptr->prace], 78, temp, sizeof(temp));
        fprintf(fff, "\n\n");
 #ifdef JP
        fprintf(fff, "¼ï²: %s\n", race_info[p_ptr->prace].title);
@@ -6429,14 +6429,14 @@ void dump_yourself(FILE *fff)
        fprintf(fff, "Race: %s\n", race_info[p_ptr->prace].title);
 #endif
        t = temp;
-       for (i = 0; i < 8; i++)
+       for (i = 0; i < 10; i++)
        {
                if(t[0] == 0)
                        break; 
                fprintf(fff, "%s\n",t);
                t += strlen(t) + 1;
        }
-       roff_to_buf(class_jouhou[p_ptr->pclass], 78, temp);
+       roff_to_buf(class_jouhou[p_ptr->pclass], 78, temp, sizeof(temp));
        fprintf(fff, "\n");
 #ifdef JP
        fprintf(fff, "¿¦¶È: %s\n", class_info[p_ptr->pclass].title);
@@ -6444,14 +6444,14 @@ void dump_yourself(FILE *fff)
        fprintf(fff, "Class: %s\n", class_info[p_ptr->pclass].title);
 #endif
        t = temp;
-       for (i = 0; i < 8; i++)
+       for (i = 0; i < 10; i++)
        {
                if(t[0] == 0)
                        break; 
                fprintf(fff, "%s\n",t);
                t += strlen(t) + 1;
        }
-       roff_to_buf(seikaku_jouhou[p_ptr->pseikaku], 78, temp);
+       roff_to_buf(seikaku_jouhou[p_ptr->pseikaku], 78, temp, sizeof(temp));
        fprintf(fff, "\n");
 #ifdef JP
        fprintf(fff, "À­³Ê: %s\n", seikaku_info[p_ptr->pseikaku].title);
@@ -6469,7 +6469,7 @@ void dump_yourself(FILE *fff)
        fprintf(fff, "\n");
        if (p_ptr->realm1)
        {
-               roff_to_buf(realm_jouhou[technic2magic(p_ptr->realm1)-1], 78, temp);
+               roff_to_buf(realm_jouhou[technic2magic(p_ptr->realm1)-1], 78, temp, sizeof(temp));
 #ifdef JP
                fprintf(fff, "ËâË¡: %s\n", realm_names[p_ptr->realm1]);
 #else
@@ -6487,7 +6487,7 @@ void dump_yourself(FILE *fff)
        fprintf(fff, "\n");
        if (p_ptr->realm2)
        {
-               roff_to_buf(realm_jouhou[technic2magic(p_ptr->realm2)-1], 78, temp);
+               roff_to_buf(realm_jouhou[technic2magic(p_ptr->realm2)-1], 78, temp, sizeof(temp));
 #ifdef JP
                fprintf(fff, "ËâË¡: %s\n", realm_names[p_ptr->realm2]);
 #else
index 6a6711a..d3ff394 100644 (file)
@@ -3471,7 +3471,7 @@ static bool eval_ac(int iAC)
        }
 
        /* Display note */
-       roff_to_buf(memo, 70, buf);
+       roff_to_buf(memo, 70, buf, sizeof(buf));
        for (t = buf; t[0]; t += strlen(t) + 1)
                put_str(t, (row++) + 4, 4);
 
index d482f40..845857d 100644 (file)
@@ -549,7 +549,7 @@ s = "
                        s_ptr = &mp_ptr->info[use_realm - 1][spell];
                }
 
-               roff_to_buf( spell_tips[technic2magic(use_realm)-1][spell] ,62,temp);
+               roff_to_buf(spell_tips[technic2magic(use_realm)-1][spell] ,62, temp, sizeof(temp));
                for(j=0, line = 11;temp[j];j+=(1+strlen(&temp[j])))
                {
                        prt(&temp[j], line, 15);
index 434eb34..91a493a 100644 (file)
@@ -7139,7 +7139,7 @@ static bool select_magic_eater(bool only_browse)
                        Term_erase(7, 21, 255);
                        Term_erase(7, 20, 255);
 
-                       roff_to_buf(k_text + k_info[lookup_kind(tval, i)].text, 62, temp);
+                       roff_to_buf(k_text + k_info[lookup_kind(tval, i)].text, 62, temp, sizeof(temp));
                        for (j = 0, line = 21; temp[j]; j += 1 + strlen(&temp[j]))
                        {
                                prt(&temp[j], line, 10);
index 196f898..a1a920e 100644 (file)
@@ -1190,7 +1190,7 @@ extern void pause_line(int row);
 extern void request_command(int shopping);
 extern bool is_a_vowel(int ch);
 extern int get_keymap_dir(char ch);
-extern void roff_to_buf(cptr str, int wlen, char *tbuf);
+extern void roff_to_buf(cptr str, int wlen, char *tbuf, size_t bufsize);
 
 #ifdef SORT_R_INFO
 extern void tag_sort(tag_type elements[], int number);
index 35b6f96..d14b8e9 100644 (file)
@@ -3907,7 +3907,7 @@ void display_player(int mode)
                        if (*statmsg)
                        {
                                char temp[64*2], *t;
-                               roff_to_buf(statmsg, 60, temp);
+                               roff_to_buf(statmsg, 60, temp, sizeof(temp));
                                t = temp;
                                for(i=0 ; i<2 ; i++)
                                {
index 0210774..6323c66 100644 (file)
@@ -2282,7 +2282,7 @@ void do_cmd_mind_browse(void)
                Term_erase(12, 17, 255);
                Term_erase(12, 16, 255);
 
-               roff_to_buf( mind_tips[use_mind][n],62,temp);
+               roff_to_buf(mind_tips[use_mind][n], 62, temp, sizeof(temp));
                for(j=0, line = 17;temp[j];j+=(1+strlen(&temp[j])))
                {
                        prt(&temp[j], line, 15);
index 9a7af53..3f51d02 100644 (file)
@@ -2393,7 +2393,7 @@ bool screen_object(object_type *o_ptr, bool real)
 
                roff_to_buf(o_ptr->name1 ? (a_text + a_info[o_ptr->name1].text) :
                            (k_text + k_info[lookup_kind(o_ptr->tval, o_ptr->sval)].text),
-                           77 - 15, temp);
+                           77 - 15, temp, sizeof(temp));
                for (j = 0; temp[j]; j += 1 + strlen(&temp[j]))
                { info[i] = &temp[j]; i++;}
        }
index 361da47..1e2ff36 100644 (file)
@@ -8204,7 +8204,7 @@ void do_cmd_kaji(bool only_browse)
                Term_erase(14, 17, 255);
                Term_erase(14, 16, 255);
 
-               roff_to_buf( kaji_tips[mode-1],62,temp);
+               roff_to_buf(kaji_tips[mode-1], 62, temp, sizeof(temp));
                for(j=0, line = 17;temp[j];j+=(1+strlen(&temp[j])))
                {
                        prt(&temp[j], line, 15);
index 66b3a53..053c55c 100644 (file)
@@ -4818,7 +4818,7 @@ void build_gamma_table(int gamma)
 
 #endif /* SUPPORT_GAMMA */
 
-void roff_to_buf(cptr str, int maxlen, char *tbuf)
+void roff_to_buf(cptr str, int maxlen, char *tbuf, size_t bufsize)
 {
        int read_pt = 0;
        int write_pt = 0;
@@ -4891,6 +4891,10 @@ void roff_to_buf(cptr str, int maxlen, char *tbuf)
 #ifdef JP
                if (!kinsoku) word_punct = read_pt;
 #endif
+
+               /* Not enough buffer size */
+               if (write_pt + 3 >= bufsize) break;
+
                tbuf[write_pt++] = ch[0];
                line_len++;
                read_pt++;