From ea35613ed08094d36fc0c1c5d1f7f1fdb8ed14f3 Mon Sep 17 00:00:00 2001 From: Habu Date: Fri, 12 Feb 2021 21:32:38 +0900 Subject: [PATCH] =?utf8?q?[update]=20=E5=A4=A7=E3=81=8D=E3=81=AA=E3=82=B5?= =?utf8?q?=E3=82=A4=E3=82=BA=E3=81=AE=E3=83=9E=E3=83=83=E3=83=97=E3=82=82?= =?utf8?q?=E3=82=B9=E3=82=B3=E3=82=A2=E3=82=B5=E3=83=BC=E3=83=90=E3=81=B8?= =?utf8?q?=E9=80=81=E4=BF=A1=E3=81=A7=E3=81=8D=E3=82=8B=E3=82=88=E3=81=86?= =?utf8?q?=E3=81=AB=E3=81=97=E3=81=9F=E3=81=84=20#43?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 生成されるスクリーンダンプのサイズ制限を、256KiB→1MiBに拡張する。 また、セーブファイルからスクリーンダンプをロードする時に スタック領域に1MiBのバッファを積むことはできないので、 ヒープ領域にバッファを用意する。 --- src/load/load.c | 6 ++++-- src/system/system-variables.h | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/load/load.c b/src/load/load.c index a2aab0e9f..36f807f4a 100644 --- a/src/load/load.c +++ b/src/load/load.c @@ -216,10 +216,12 @@ static errr exe_reading_savefile(player_type *creature_ptr) rd_s16b(&creature_ptr->pet_extra_flags); if (!z_older_than(11, 0, 9)) { - char buf[SCREEN_BUF_MAX_SIZE]; - rd_string(buf, sizeof(buf)); + char *buf; + C_MAKE(buf, SCREEN_BUF_MAX_SIZE, char); + rd_string(buf, SCREEN_BUF_MAX_SIZE); if (buf[0]) screen_dump = string_make(buf); + C_KILL(buf, SCREEN_BUF_MAX_SIZE, char); } errr restore_dungeon_result = restore_dungeon(creature_ptr); diff --git a/src/system/system-variables.h b/src/system/system-variables.h index 6d2ed8766..9355007a1 100644 --- a/src/system/system-variables.h +++ b/src/system/system-variables.h @@ -3,7 +3,7 @@ #include "system/angband.h" #define MAX_NAZGUL_NUM 5 -#define SCREEN_BUF_MAX_SIZE (4 * 65536) /*!< Max size of screen dump buffer */ +#define SCREEN_BUF_MAX_SIZE (1024 * 1024) /*!< Max size of screen dump buffer */ typedef enum init_flags_type { INIT_NAME_ONLY = 0x01, -- 2.11.0