romegames 1
romegames
Krutzo 1
Krutzo
shrpnl 1
shrpnl
Best Studio 1
Best Studio
D 1
delimuratt
Aliyldrim 1
Aliyldrim
Mt2Hizmet 1
Mt2Hizmet
noisiv 1
noisiv
Manwe Work 1
Manwe Work
melankolıa18 1
melankolıa18
Agora Metin2 1
Agora Metin2
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

Sanii switchbot - Memory Leak Fix

  • Konuyu başlatan Konuyu başlatan Agora Metin2
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 9
  • Görüntüleme Görüntüleme 849

Agora Metin2

Level 7
Uzman Moderatör
Dergi Editörü
TM Üye
Katılım
17 Eki 2016
Konular
129
Mesajlar
2,409
Çözüm
86
Online süresi
2mo 11d
Reaksiyon Skoru
1,290
Altın Konu
1
Başarım Puanı
258
MmoLira
1,866
DevLira
12
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

Yapalı baya oldu o yüzden %100 case'i hatırlamıyorum ama event devam ederken iptal etmeye çalışıldığı için core crash yaşanıyordu, windows geliştirme ortamında yaşamıştım yanlış hatırlamıyorsam freebsd'de sorun olmayabilir:


new_switchbot.h


Arat:
Kod:
void Pause();

Altına Ekle:
Kod:
void ClearEvent(); // Clear event pointer (called from event handler)

new_switchbot.cpp

Arat:
Kod:
info->pkSwitchbot->SwitchItems();

Altına Ekle:

Kod:
    if (!info->pkSwitchbot->HasActiveSlots())
    {
        info->pkSwitchbot->ClearEvent(); // Clear event pointer
        return 0; // Stop event
    }


Arat:

Kod:
void CSwitchbot::Pause()
{
    if (m_pkSwitchEvent)
    {
        event_cancel(&m_pkSwitchEvent);
        m_pkSwitchEvent = nullptr;
    }
}

Altına Ekle:

Kod:
void CSwitchbot::ClearEvent()
{
    m_pkSwitchEvent = nullptr;
}

Arat:
Kod:
info->pkSwitchbot->SwitchItems();

Altına Ekle:

Kod:
    if (!info->pkSwitchbot->HasActiveSlots())
    {
        info->pkSwitchbot->ClearEvent(); // Clear event pointer
        return 0; // Stop event
    }

Arat:
Kod:
            if (!HasActiveSlots())
            {

İf bloğunu değiştir:
Kod:
                memset(&m_table.active, 0, sizeof(m_table.active));
                CSwitchbotManager::Instance().SendSwitchbotUpdate(m_table.player_id);
                return; // Exit early - event will stop when it returns 0


Arat:
Kod:
if (stop)

if bloğunu değiştir:
Kod:
            if (stop)
            {
                // Don't call Stop() here - we're inside the event handler
                // Just clear active flags and notify player
                memset(&m_table.active, 0, sizeof(m_table.active));

                if (SWITCHBOT_PRICE_TYPE == 1)
                    pkOwner->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Switchbot stopped. Out of switchers."));
                else
                    pkOwner->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Switchbot stopped. Not enough money."));

                CSwitchbotManager::Instance().SendSwitchbotUpdate(m_table.player_id);
                return;
            }
 
paylaşım için teşekkürler
 
paylaşım için teşekkürler
 
c#'a dönüştürüp ilgili arkadaşlara atmak isterdim fakat c# da pointer mantığı çok farklı
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst