67 legacy source snippets, with an individual review and three corrected components
This maintenance collection is for administrators and developers maintaining a legacy Metin2 C++ client/server fork. The supplied 4765_Fix_Arsivi-zip_.zip contains 67 short Turkish instructions covering terrain, items, combat, quests, guilds, network packets and UI. M2City read every fragment and added an indexed review with the original filename and SHA-256. It is one resource, not 67 duplicate posts. The original archive is retained for provenance; do not apply it wholesale.

The three r1 corrections
1. ETC drop-table VNUM parsing: replace the unchecked numeric fallback with a bounded decimal parser for nonzero 32-bit item IDs. It rejects signs, whitespace, trailing characters and overflow, leaves the output unchanged on failure and preserves item-name lookup before numeric fallback. The resulting proto still must exist.
2. Empty/missing TextureSet resource: the supplied instructions place the null check after IsType, which already dereferences the pointer. The reviewed insertion goes immediately after lookup and before any dereference, in both SetTexture and AddTexture. Existing wrong-type checks remain.
3. Granny texture access: the supplied accessor handles only an index above the count. The revised methods also reject negative indices and missing file-info, pointer array, texture entry or filename. A valid path remains borrowed from Granny; ownership does not change. This does not validate arbitrary GR2 files or fix every rendering problem.

What the other entries mean
REVIEW-INDEX.txt and its JSON counterpart classify all 67 entries as corrected, conditional, policy change or rejected as supplied. Only the three listed above have revised code. The remaining 64 are not advertised as tested fixes.
Examples of rejected changes include semicolon truncation presented as SQL-injection protection, a sex-change check performed after changing the character, strlen on an untrusted fixed-size packet name, an always-true belt subtype condition, full healing on every login/warp, and replacing a private bind address with 0. Recovery snippets also change combat probabilities and disagree with each other. The review explains these specific defects and the missing branch contracts.

How to integrate
Start from INSTALL.txt and the review index. Back up your source and select only a change relevant to your actual fork. Merge the strict parser into the existing name-lookup failure branch, preserving proto validation and failed-load handling. Insert the null guard in both terrain functions. Merge the two texture accessor definitions with matching header declarations, avoiding duplicates. No new packet, SQL schema, vendor dependency or executable is installed.
These components assume the legacy CTextureSet, CGraphicThing/Granny and ITEM_MANAGER interfaces. They are a source merge kit, not a complete server distribution or an automatic universal patch. Rebuild the exact target and test normal/missing/wrong-type textures, zero/valid texture models and named/numeric/invalid drop-table entries in staging. Integration acceptance steps and rollback are included.

Executed validation
All 67 supplied fragments were read. The exact three revised components compiled with clang++ in C++11 mode using -Wall -Wextra -Werror and signed-overflow trapping. The synthetic engine harness passed 10,000 decimal round-trips, invalid and boundary identifiers, null/type checks, negative/out-of-range texture indices and missing pointer fields. The test source and results are included. This is isolated validation, not a full Metin2 build, real Granny load, live gameplay test or security certification. No supplied executable was run and no preview image is invented.

Reference and credit
MariusExygo's 2018 Empty Textureset discussion documents the null-check ordering for that specific issue. It does not establish authorship or exact version of this entire compilation. Original in-file credits remain in the unmodified archive; M2City wrote the review and corrected merge components. The supplying owner confirmed redistribution. No blanket open-source licence is asserted and no external forum post or media was copied.

Editorial resource — M2City
Version: Owner-supplied legacy integration; M2City r1 (2026-11-04); exact fork unspecified
Rights: Owner explicitly confirmed public redistribution. Preserve original notices; no open-source relicensing.
Validation: All 67 supplied text fragments read and individually annotated. Three corrected components compiled with clang++ C++11 -Wall -Wextra -Werror -ftrapv against fake engine structures: 10000 decimal round-trips, invalid/boundary IDs, null/type gate, texture bounds and null fields passed. No full Metin2/Granny build or game test; other 64 fragments not runtime-certified.
Source: Owner-supplied 67-file compilation; MariusExygo reference for TextureSet issue only
SHA-256: 3f31a437c91c3d8a7ad2898bb9b5b1a6f6bea8542fbb7451d16270e8131c25b2