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

Kaptan Yosun

Moderatör
Moderatör
Geliştirici
Yardımsever Üye
Mesaj
1.025
Çözümler
35
Beğeni
1.077
Puan
1.339
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:
Genişlet Daralt Kopyala
bool CDXTCImage::LoadHeaderFromMemory(const BYTE * c_pbMap)
değiştirin:
Genişlet Daralt Kopyala
bool CDXTCImage::LoadHeaderFromMemory(const BYTE * c_pbMap, int iSize)

aratın:
Genişlet Daralt Kopyala
DWORD dwMagic;
altına ekleyin:
Genişlet Daralt Kopyala
if (iSize < sizeof(DWORD))
        return false;

aratın:
Genişlet Daralt Kopyala
    dwMagic = *(DWORD *) c_pbMap;
    c_pbMap += sizeof(DWORD);
altına ekleyin:
Genişlet Daralt Kopyala
iSize -= sizeof(DWORD);

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

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

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

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

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

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

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

EterLib/GrpImageTexture.cpp
aratın:
Genişlet Daralt Kopyala
if (image.LoadHeaderFromMemory((const BYTE *) c_pvBuf))
değiştirin:
Genişlet Daralt Kopyala
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