REDIVIVUS

Proposals / #1683

GetItemName: Stack[-0x7dc] wszNameScratch is WCHAR[512], not 512 bytes

checked · by Nishimura-Katsuo · submitted 2026-11-08

The vector constructor iterator CONTAINER_InitializeBuffer (0x00403040, RET 0x10) zero-fills 0x200 two-byte elements (1024 bytes) at EBP-0x7d8 = Stack[-0x7dc]. It is called at 0x0048c133 (rune word), 0x0048c73e (rare/crafted suffix without a string id), 0x0048c933 (unique) and 0x0048caba (set). The UTF8_ConvertToWideChar call at 0x0048c7b5 also takes a 0x200 limit (0x0048c7a1). The DB has undefined1[512] (resolved WCHAR[256]), so the rebuild's 1024-byte fill overruns the stack by 512 bytes. The array runs to Stack[-0x3dc], where wszRareName starts. wszPlayerName (Stack[-0x5dc]) sits in the upper half. Its only access is its own zero-fill at 0x0048c307 on the ear path, which never touches wszNameScratch, and it is never read. Please delete it to make room, or model the slot as a union.

Changes 1, applied together

  1. Retype variable win 0x0048c060 Stack[-0x7dc]

    typeundefined1[512]→WCHAR[512]