}
strcat(buff, "で、名前が「");
- strncat(buff, describer->str, 80);
+ angband_strcat(buff, describer->str, (MAX_NLEN - MAX_INSCRIPTION));
if (describer->top)
strcat(buff, "」で始まるもの");
else
}
if (describer->insc) {
- strncat(buff, format("に「%s」", describer->insc), 80);
+ char tmp[MAX_INSCRIPTION + 1] = "";
+ angband_strcat(tmp, describer->insc, MAX_INSCRIPTION);
+ angband_strcat(buff, format("に「%s」", tmp), MAX_INSCRIPTION + 6);
if (angband_strstr(describer->insc, "%%all"))
strcat(buff, "(%%allは全能力を表す英字の記号で置換)");
#include "util/bit-flags-calculator.h"
#include "util/int-char-converter.h"
#include "util/quarks.h"
+#include "util/string-processor.h"
#include "view/display-inventory.h"
#include "view/display-messages.h"
OBJECT_IDX item;
object_type *o_ptr;
GAME_TEXT o_name[MAX_NLEN];
- char out_val[80];
+ char out_val[MAX_INSCRIPTION + 1] = "";
concptr q = _("どのアイテムに銘を刻みますか? ", "Inscribe which item? ");
concptr s = _("銘を刻めるアイテムがない。", "You have nothing to inscribe.");
o_ptr = choose_object(player_ptr, &item, q, s, (USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT));
msg_print(nullptr);
strcpy(out_val, "");
if (o_ptr->inscription)
- strcpy(out_val, quark_str(o_ptr->inscription));
+ angband_strcpy(out_val, quark_str(o_ptr->inscription), MAX_INSCRIPTION);
- if (get_string(_("銘: ", "Inscription: "), out_val, 80)) {
+ if (get_string(_("銘: ", "Inscription: "), out_val, MAX_INSCRIPTION)) {
o_ptr->inscription = quark_add(out_val);
set_bits(player_ptr->update, PU_COMBINE);
set_bits(player_ptr->window_flags, PW_INVEN | PW_EQUIP | PW_FLOOR_ITEM_LIST);
#define MAX_SHORT 32767 /*!< Maximum value storable in a "int16_t" (hard-coded) */
#define MAX_NLEN 160 /*!< Maximum length of object's name */
+#define MAX_INSCRIPTION _(76, 69) /*!< Maximum length of object's inscription */
#define MAX_MONSTER_NAME 160 /*!< モンスター名称の最大バイト数 / Max characters of monster's name */
/*!