— C4101 Kullanılmayan Değişken Temizliği
Tarih: 25.10.2026
Files: Martysama Server Files v5.8
Sürüm bilgileri: FreeBSD 14.0, MariaDB 10.11, Visual Studio 2022 (v14x)
char.cpp, char_battle.cpp ve mob_manager.cpp dosyalarında hiçbir yerde referans verilmeyen yerel değişkenlerden kaynaklı C4101 uyarıları temizlendi. char_battle.cpp içindeki int iRet; (1428. satır) ve mob_manager.cpp içindeki LPSECTREE pSectree = nullptr; (612. satır) gibi kullanılmayan tanımlar kaldırıldı. Davranış değişmedi, derleme çıktısı temizlendi.
Durum: Derleme başarılı. C4101 uyarıları temizlendi.
Güncelleme 3 — C4018 İşaretli/İşaretsiz Uyuşmazlığı
Tarih: 26.10.2026
Files: Martysama Server Files v5.8
Sürüm bilgileri: FreeBSD 14.0, MariaDB 10.11, Visual Studio 2022 (v14x)
item_manager.cpp içindeki for (int i = 0; i < m_vec_items.size(); ++i) benzeri döngülerde size_t dönüşü ile int karşılaştırmasından doğan C4018 uyarıları giderildi. Döngü sayaçları size_t veya std::size_t türüne çekildi (48, 122, 305. satırlar). Vektör büyüklük limitleri zaten UINT_MAX altında olduğundan taşma riski yok.
Durum: Derleme başarılı. C4018 uyarıları temizlendi.
Güncelleme 4 — C4267 size_t → int Dönüşümü
Tarih: 27.10.2026
Files: Martysama Server Files v5.8
Sürüm bilgileri: FreeBSD 14.0, MariaDB 10.11, Visual Studio 2022 (v14x)
db.cpp ve ClientManager.cpp içinde std::string::length() ve strlen() sonuçlarının int türündeki değişkenlere atanması sırasındaki C4267 uyarıları, değerler INT_MAX altında olduğu için açık static_cast<int> ile giderildi. Paket boyut hesaplamalarında davranış değişmedi.
Durum: Derleme başarılı. C4267 uyarıları temizlendi.
Güncelleme 5 — C4244 double/float → int Uyarıları
Tarih: 28.10.2026
Files: Martysama Server Files v5.8
Sürüm bilgileri: FreeBSD 14.0, MariaDB 10.11, Visual Studio 2022 (v14x)
char.cpp içindeki EXP, HP ve SP hesaplamalarında double ve float türü ara değerlerin int ve DWORD değişkenlere atanması sırasındaki C4244 uyarıları temizlendi. Yuvarlama davranışını bozmamak için static_cast<int> (kesme yönü korunarak) uygulandı. Oyun ekonomisi ve level eğrisi değişmedi.
Durum: Derleme başarılı. C4244 uyarıları temizlendi.
Güncelleme 6 — C4800 bool Zorlaması
Tarih: 29.10.2026
Files: Martysama Server Files v5.8
Sürüm bilgileri: FreeBSD 14.0, MariaDB 10.11, Visual Studio 2022 (v14x)
questlua_* dosyalarında int ve DWORD değerlerin bool parametrelere aktarılması sırasında üretilen C4800 uyarıları != 0 karşılaştırması ile açık hale getirildi. questlua_npc.cpp içindeki SetFlag ve IsFlag çağrıları etkilendi (sırasıyla 210, 233. satırlar). Anlamsal davranış korundu.
Durum: Derleme başarılı. C4800 uyarıları temizlendi.
Güncelleme 7 — C4456 Yerel Değişken Gölgelemesi
Tarih: 30.10.2026
Files: Martysama Server Files v5.8
Sürüm bilgileri: FreeBSD 14.0, MariaDB 10.11, Visual Studio 2022 (v14x)
char_item.cpp içinde UseItem fonksiyonunda üst kapsamdaki dwVnum değişkenini gölgeleyen iç blok tanımları (C4456) yeniden adlandırıldı (dwItemVnum). Fonksiyon davranışı değişmedi, yalnızca okunabilirlik ve derleyici uyarısı düzeltildi.
Durum: Derleme başarılı. C4456 uyarıları temizlendi.
Güncelleme 8 — C4458 Sınıf Üye Gölgelemesi
Tarih: 01.11.2026
Files: Martysama Server Files v5.8
Sürüm bilgileri: FreeBSD 14.0, MariaDB 10.11, Visual Studio 2022 (v14x)
CHARACTER::SetHP ve CHARACTER::SetSP fonksiyon parametreleri sınıf üyeleriyle aynı isimde olduğu için C4458 uyarısı üretiyordu. Parametre isimleri iHPValue, iSPValue olarak değiştirildi. Mevcut atama mantığı korundu.
Durum: Derleme başarılı. C4458 uyarıları temizlendi.
Güncelleme 9 — C4706 Koşul İçinde Atama
Tarih: 02.11.2026
Files: Martysama Server Files v5.8
Sürüm bilgileri: FreeBSD 14.0, MariaDB 10.11, Visual Studio 2022 (v14x)
input_main.cpp içinde while ((iRet = ProcessInput()) != 0) dışında kalan, C4706 uyarısı üreten if (dwFlag = GetFlag()) tipi koşullar (781. satır) if ((dwFlag = GetFlag()) != 0) şekline dönüştürüldü. Okunabilirlik arttı, mantık değişmedi.
Durum: Derleme başarılı. C4706 uyarıları temizlendi.
Güncelleme 10 — C4996 sprintf Deprecated Uyarıları
Tarih: 03.11.2026
Files: Martysama Server Files v5.8
Sürüm bilgileri: FreeBSD 14.0, MariaDB 10.11, Visual Studio 2022 (v14x)
log.c ve db.cpp genelinde sprintf çağrılarından kaynaklanan C4996 uyarıları temizlendi. Buffer taşması riskini ortadan kaldırmak için snprintf ile değiştirildi ve tüm format string argümanları yeniden kontrol edildi. Log biçimleri ve dosya çıktıları birebir korundu.
Durum: Derleme başarılı. C4996 uyarıları temizlendi.
Güncelleme 11 — C4996 strcpy/strcat Deprecated Uyarıları
Tarih: 04.11.2026
Files: Martysama Server Files v5.8
Sürüm bilgileri: FreeBSD 14.0, MariaDB 10.11, Visual Studio 2022 (v14x)
socket.c ve config.cpp içindeki strcpy/strcat çağrıları C4996 nedeniyle uyarı üretiyordu. Çağrılar strncpy ve strncat ile, hedef tampon boyutları sabit tutularak değiştirildi. IP, port, kanal adı gibi config değerlerinin okunması etkilenmedi.
Durum: Derleme başarılı. C4996 uyarıları temizlendi.
Güncelleme 12 — C6054 Sıfır Sonlandırma Kontrolü
Tarih: 05.11.2026
Files: Martysama Server Files v5.8
Sürüm bilgileri: FreeBSD 14.0, MariaDB 10.11, Visual Studio 2022 (v14x)
Kod analizi (C6054) tarafından işaretlenen snprintf sonrası tamponun sıfır ile sonlanmadığı varsayımı, açıkça buffer[sizeof(buffer) - 1] = '\0'; eklenerek güvenceye alındı (CsvReader.cpp, 96. satır). CSV parse davranışı korundu.
Durum: Derleme başarılı. Kod analizi uyarısı giderildi.
Güncelleme 13 — C6001 Başlatılmamış Bellek Kullanımı
Tarih: 06.11.2026
Files: Martysama Server Files v5.8
Sürüm bilgileri: FreeBSD 14.0, MariaDB 10.11, Visual Studio 2022 (v14x)
Item::Initialize() fonksiyonunda aAttr ve alSockets dizileri tamamen doldurulmadan önce okunmasına yol açabilecek C6001 uyarısı, memset ile varsayılan sıfırlama eklenerek giderildi. Yeni item oluşturma akışı aynen korundu.
Durum: Derleme başarılı. C6001 uyarıları temizlendi.
Güncelleme 14 — Sanal Yıkıcı Fonksiyon Eksikliği
Tarih: 07.11.2026
Files: Martysama Server Files v5.8
Sürüm bilgileri: FreeBSD 14.0, MariaDB 10.11, Visual Studio 2022 (v14x)
CGrid ve CSectTree sınıflarında taban sınıf yıkıcı fonksiyonu virtual yapıldı. Polimorfik silme sırasında tanımsız davranış riski ortadan kaldırıldı. Sektree yeniden yükleme akışında herhangi bir sapma gözlenmedi.
Durum: Derleme başarılı. C4265 uyarıları giderildi.
Güncelleme 15 — Bellek Sızıntısı Düzeltmesi
Tarih: 08.11.2026
Files: Martysama Server Files v5.8
Sürüm bilgileri: FreeBSD 14.0, MariaDB 10.11, Visual Studio 2022 (v14x)
questlua_pc.cpp içindeki pc_give_item benzeri fonksiyonlarda hata yollarında delete çağrılmadan dönülen dallar tespit edildi. std::unique_ptr kullanımına geçilerek erken dönüşlerde sızıntı riski giderildi. Başarı yolu üzerindeki davranış değişmedi.
Durum: Derleme başarılı. Bellek sızıntısı giderildi.
Güncelleme 16 — Null Pointer Kontrolü
Tarih: 09.11.2026
Files: Martysama Server Files v5.8
Sürüm bilgileri: FreeBSD 14.0, MariaDB 10.11, Visual Studio 2022 (v14x)
char_battle.cpp içindeki Attack akışında pkVictim ve pkAttacker işaretçileri dereference edilmeden önce null kontrolü eklendi. Savaş alanından kopan bir karakterin nadir crash senaryosu kapatıldı. Normal savaş akışı etkilenmedi.
Durum: Derleme başarılı, crash senaryosu kapatıldı.
Güncelleme 17 — Race Condition (Map Yenileme)
Tarih: 10.11.2026
Files: Martysama Server Files v5.8
Sürüm bilgileri: FreeBSD 14.0, MariaDB 10.11, Visual Studio 2022 (v14x)
sectree_manager.cpp içindeki harita yükleme iş parçacıklarında m_mapSectree erişimi sırasında oluşabilecek yarış durumu tespit edildi. Erişim std::mutex ile koruma altına alındı. Harita yükleme süresi ihmal edilebilir düzeyde arttı, veri bütünlüğü sağlandı.
Durum: Derleme başarılı. Yarış durumu giderildi.
Güncelleme 18 — Off-by-One Düzeltmesi (Chat Paketi)
Tarih: 11.11.2026
Files: Martysama Server Files v5.8
Sürüm bilgileri: FreeBSD 14.0, MariaDB 10.11, Visual Studio 2022 (v14x)
input_main.cpp içindeki sohbet mesajı parse işleminde CHAT_MAX_LEN sınırı bir karakter aşılabiliyordu. Sınır kontrolü >= CHAT_MAX_LEN olarak düzeltildi ve mesaj sonuna '\0' eklendi. Uzun mesaj gönderimlerinde paket red davranışı korundu.
Durum: Derleme başarılı. Off-by-one giderildi.
Güncelleme 19 — Uninitialized Struct Member
Tarih: 12.11.2026
Files: Martysama Server Files v5.8
Sürüm bilgileri: FreeBSD 14.0, MariaDB 10.11, Visual Studio 2022 (v14x)
TItemTable ve TMobTable yapılarında varsayılan kurucuda başlatılmayan alanlar (bType, bSubType, dwFlags) sıfırlandı. Sunucu açılışında rastgele item özelliği okuma riski ortadan kalktı. Protoların okunma sırası değişmedi.
Durum: Derleme başarılı, veri bütünlüğü iyileştirildi.
Güncelleme 20 — const-correctness İyileştirmesi
Tarih: 13.11.2026
Files: Martysama Server Files v5.8
Sürüm bilgileri: FreeBSD 14.0, MariaDB 10.11, Visual Studio 2022 (v14x)
GetGold(), GetExp() ve GetLevel() erişimcileri const olarak işaretlendi. Çağrı yerlerinde gereksiz const_cast kullanımı kaldırıldı. Derleyicinin C4180/optimizasyon uyarıları temizlendi, ABI değişmedi.
Durum: Derleme başarılı. const-correctness iyileştirildi.
Güncelleme 21 — Kullanılmayan Parametre Temizliği
Tarih: 14.11.2026
Files: Martysama Server Files v5.8
Sürüm bilgileri: FreeBSD 14.0, MariaDB 10.11, Visual Studio 2022 (v14x)
questlua_* fonksiyonlarında kullanılmayan lua_State* L benzeri parametreler (void)L; veya [[maybe_unused]] ile susturuldu (C4100). Fonksiyon imzaları değişmedi; Lua tarafındaki çağrılar aynen çalışıyor.
Durum: Derleme başarılı. C4100 uyarıları temizlendi.
Güncelleme 22 — Ölü Kod Kaldırma
Tarih: 15.11.2026
Files: Martysama Server Files v5.8
Sürüm bilgileri: FreeBSD 14.0, MariaDB 10.11, Visual Studio 2022 (v14x)
char.cpp içinde eski sürümlerden kalan ve hiçbir yerden çağrılmayan ComputeSkillBonusLegacy() ve DebugPrintCharState() fonksiyonları kaldırıldı. Binary boyutu azaldı, derleme süresi kısaldı. Fonksiyonel değişiklik yok.
Durum: Derleme başarılı. Ölü kod kaldırıldı.