[FIX] Python int too large to convert to C Long

Kaptan Yosun

Moderatör
Moderatör
Geliştirici
Yardımsever Üye
Mesaj
1.260
Çözümler
45
Beğeni
1.799
Puan
1.339
Ticaret Puanı
0
Sıfırdan mainline files yaptıysanız bu hatayı bilirsiniz. Client açılırken çöker ve bu hatayı loglar:

Kod:
Genişlet Daralt Kopyala
Python int too large to convert to C Long

Bunu genelde uğraşmak istemeyenler PythonUtils.cpp'ye bu defineleri ekleyerek maskeler.

C++:
Genişlet Daralt Kopyala
#define PyLong_AsLong PyLong_AsLongLong
#define PyLong_AsUnsignedLong PyLong_AsUnsignedLongLong

Ancak bu bir fix değildir. #define int32_t = int64_t gibi saçma bir çözümdür.

Gerçek fix bu şekildedir:

root/system.py'de
Arayın:
Genişlet Daralt Kopyala
module_do = exec_add_module_do
Altına ekleyin:
Genişlet Daralt Kopyala
def StringColorToInt(colorstring):
    import grp

    colorstring = colorstring.strip()

    if len(colorstring) != 8:
        raise ValueError("input #%s is not in AARRGGBB format" % colorstring)

    a, r, g, b = colorstring[:2], colorstring[2:4], colorstring[4:6], colorstring[6:8]
    a, r, g, b = [int(n, 16) for n in (a, r, g, b)]

    return grp.GenerateColor(
        float(r) / 255.0,
        float(g) / 255.0,
        float(b) / 255.0,
        float(a) / 255.0,
    )

__builtin__.CTOA = StringColorToInt

Sonra packtaki tüm 0xff ile başlayan renk kodlarını CTOA içine alın.
Örnek:
Genişlet Daralt Kopyala
Bunu:
    self.readingWnd.SetTextColor(0xffffffff)

Bu şekil değiş:
    self.readingWnd.SetTextColor(CTOA("ffffffff"))
 
Geri
Üst