Hikayeler

Reklam vermek için turkmmo@gmail.com

Sanii switchbot - Memory Leak Fix

Agora Metin2

Level 7
Uzman Moderatör
Dergi Editörü
TM Üye
Katılım
17 Eki 2016
Konular
127
Mesajlar
2,358
Online süresi
2ay 10g
Reaksiyon Skoru
1,276
Altın Konu
1
Başarım Puanı
258
TM Yaşı
9 Yıl 6 Ay 7 Gün
MmoLira
1,345
DevLira
12

Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. 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.
 
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 : 3, Üye: 0, Misafir: 3)

Geri
Üst