[FIX] Işınlanınca clientin çökmesine sebep olan ve Syserr vermeyen bir bug.

Kaptan Yosun

Discord: kaptanyosun
Site yetkilisi
Acemi Moderatör
Premium Üye
Mesaj
575
Çözümler
19
Beğeni
398
Puan
839
Ticaret Puanı
0
Zamanında çok çektirdi bana. Hiçbir hata vermeden ışınlanınca bazen clienti çökertiyor bazense çökertmiyor. Hatanın kaynağı fog.tga adlı sis grafik dosyası. Düzeltmeye geçelim.

EterImageLib/DXTCImage.cpp
aratın:
bool CDXTCImage::LoadHeaderFromMemory(const BYTE * c_pbMap)
değiştirin:
bool CDXTCImage::LoadHeaderFromMemory(const BYTE * c_pbMap, int iSize)

aratın:
DWORD dwMagic;
altına ekleyin:
if (iSize < sizeof(DWORD))
        return false;

aratın:
    dwMagic = *(DWORD *) c_pbMap;
    c_pbMap += sizeof(DWORD);
altına ekleyin:
iSize -= sizeof(DWORD);

aratın:
DDSURFACEDESC2 ddsd; // read from dds file
altına ekleyin:
if (iSize < sizeof(DDSURFACEDESC2))
        return false;

aratın:
    memcpy(&ddsd, c_pbMap, sizeof(DDSURFACEDESC2));
    c_pbMap += sizeof(DDSURFACEDESC2);
altına ekleyin:
iSize -= sizeof(DDSURFACEDESC2);

aratın:
return LoadFromMemory((const BYTE*) pvMap);
değiştirin:
return LoadFromMemory((const BYTE*) pvMap, mappedFile.Size());

aratın:
bool CDXTCImage::LoadFromMemory(const BYTE * c_pbMap)
değiştirin:
bool CDXTCImage::LoadFromMemory(const BYTE * c_pbMap, int iSize)

aratın:
if (!LoadHeaderFromMemory(c_pbMap))
değiştirin:
if (!LoadHeaderFromMemory(c_pbMap, iSize))

EterImageLib/DXTCImage.h
aratın:
        bool LoadHeaderFromMemory(const BYTE * c_pbMap);
değiştirin:
        bool LoadHeaderFromMemory(const BYTE * c_pbMap, int iSize);

aratın:
        bool LoadFromMemory(const BYTE * c_pbMap);
değiştirin:
        bool LoadFromMemory(const BYTE * c_pbMap, int iSize);

EterLib/GrpImageTexture.cpp
aratın:
if (image.LoadHeaderFromMemory((const BYTE *) c_pvBuf))
değiştirin:
if (image.LoadHeaderFromMemory((const BYTE *) c_pvBuf, bufSize))
 
Son düzenleme:
bu çözümü bulmasaydım windows sf projesi iptal olacaktı delirecektim valla çok teşekkürler
 
Geri
Üst