Nie wiem jakim cudem to może działać, ponieważ:
- g_SqlX jest handlerem, czyli po prostu zmienną z etykietą handlera, o wartości równej jakiejś liczbie. Dzięki tej liczbie silnik amx odnajduje w pamięci odpowiednią strukturę danych i jej używa w funkcji, do której podaje się zmienną. Rozumiem, jakbyśmy używali tutaj freeHandle, ale przypisanie po prostu wartości Empty_Handle, czyli 0 nie ma prawa zmieniać nic w tej strukturze, a po plugin_end zmienna ta jest usuwana, więc nie widzę w tym żadnego sensu
- nawet jeśli to jest równoznaczne z "anihilacją" struktury, to robi się ona automatycznie po plugin_end na każdej strukturze
- nie też ma tutaj znaczenia coś takiego, jak to, gdzie przekazaliśmy handler do struktury (czy przekazany został z amxbans_core, czy utworzony w amxbans_main). Handler jest tylko liczbą, wskaźnikiem można rzec, więc po prostu jeśli nie przypiszemy do niego 0, będzie wskazywał na nieistniejącą strukturę.
Ale jednak, jak mówią ludzie, fix działa... Nie mam pojęcia jakim cudem, a faktycznie na zbieg okoliczności to nie wygląda, bo nikt się nie zgłasza, że błąd powraca. Zresztą nie wiem nawet jaki to ma wszystko związek z Thread Workerem... Patrząc na kod źródłowy modułu SQLx nie mogę do żadnych sensownych wniosków dojść... Nie powinno, a działa... Cóż, już nie będę negował działania fixa, nie zaszkodzi na pewno, więc feel free to use... Idę badać dalej moduł i dochodzić do wniosku, dlaczego to cholerstwo działa...
Co ciekawe... stosuję dokładnie takie samo przekazywanie tuple między pluginami, w swoich pluginach. Tyle,. że tam mam jeden plugin main i ok 6ciu podrzędnych, do których jest to przekazywane. Nie stosuję takiego "fixa", a pluginy nie powodują błędu thread workera (dopóki nie włączę amxbans, jest to jedyny plugin jaki znam, który to powoduje). Używam tego od roku, na wielu serwerach sieci, na różnych hostingach, nic się nie dzieje... Żadnych błędów, wszystko ok. Dziwne, naprawdę dziwne to jest...
Użytkownik GwynBleidD edytował ten post 16.06.2012 13:41