Informacje o zgłoszeniu
-
#002941
-
Zrealizowano
-
-
-
2.2.1.37
-
2 - średnia
Potwierdzenia zgłoszenia
-
Tak (0)Nie (0)
Czasem po wywołaniu funkcji AQQ_SYSTEM_SETSHOWANDSTATUS w opisie głównego konta jabber pojawiają się różne dziwne znaczki (takie kwadraciki, UsagiAddict twierdzi, że to japońskie literki ) albo jakiś kod HTML (przykładzik). Zwalił bym to na moją winę ale opis we wtyczkach sieciowych jak i pozostałych kontach jabber jest prawidłowy. W konsoli XML widać też te dziwne znaczki czyli po prostu AQQ coś źle interpretuje. Kod jaki wywołuję wygląda tak:
Udało mi się złapać błąd na screenie. Jak widać kontak GG ma dobry opis zaś jabber nie:
PluginLink.CallService(AQQ_FUNCTION_GETNETWORKSTATE,(WPARAM)(&PluginStateChange),0); //wypełnienie struktury PluginStateChange na podstawie głównego konta jabber PluginStateChange.cbSize = sizeof(TPluginStateChange); PluginStateChange.Status = opis.w_str(); //Zmienna UnicodeString z opisem która jak widać jest zmieniana na wchar_t* PluginStateChange.Force = force; //Zmienna bool PluginLink.CallService(AQQ_SYSTEM_SETSHOWANDSTATUS,0,(LPARAM)(&PluginStateChange));
Udało mi się złapać błąd na screenie. Jak widać kontak GG ma dobry opis zaś jabber nie:
Aktualizacja statusu do: Zatwierdzono
Aktualizacja istotności do: 2 - przeciętna
Aktualizacja istotności do: 2 - przeciętna
Błąd nie naprawiony
Aktualizacja statusu do: Zatwierdzono
Aktualizacja wersji do: 2.2.0.17
Zgłoszenie naprawione w wersji: Brak
Aktualizacja wersji do: 2.2.0.17
Zgłoszenie naprawione w wersji: Brak
Aktualizacja statusu do: Do sprawdzenia
Zgłoszenie naprawione w wersji: 2.2.0.19
Co prawda kod jest w C++, ale widzę tutaj pewien problem. Co prawda konwertujesz opis do PWideChar, ale skonwertowana wartość wpada do zmiennej tymczasowej, której żywot ogranicza się jedynie do czasu trwania funkcji. Skonwertuj wartość opisu, i umieść ją w globalnej zmiennej PWideChar. Dopiero wówczas przekaż ją do funkcji. Obecny stan wprowadza bowiem czynnik przypadku, bo jeżeli zakres pamięci w którym umieszczony został opis, zostanie zapisany innymi danymi, to właśnie ów dane pojawią się zamiast opisu na liście kontaktów.
Zgłoszenie naprawione w wersji: 2.2.0.19
Co prawda kod jest w C++, ale widzę tutaj pewien problem. Co prawda konwertujesz opis do PWideChar, ale skonwertowana wartość wpada do zmiennej tymczasowej, której żywot ogranicza się jedynie do czasu trwania funkcji. Skonwertuj wartość opisu, i umieść ją w globalnej zmiennej PWideChar. Dopiero wówczas przekaż ją do funkcji. Obecny stan wprowadza bowiem czynnik przypadku, bo jeżeli zakres pamięci w którym umieszczony został opis, zostanie zapisany innymi danymi, to właśnie ów dane pojawią się zamiast opisu na liście kontaktów.
Beherit doinstaluj sobie Chinskie czcionki Twoj opis:
ciekawie to wyglada w translate.google.com ))潣⽭呗㥆㍂㝅䅃❁琠㵯戧桥牥瑩慀煱攮❵琠灹㵥攧牲牯㸧攼敶瑮砠汭獮✽瑨灴⼺樯扡敢牯⽧牰瑯捯汯瀯扵畳⍢癥湥❴㰾瑩浥潮敤✽瑨灴⼺樯扡敢牯⽧牰瑯捯汯琯湵❥㰾瑩浥椠㵤㐧㍆㐹䉆㠲䈷䔳㸧琼湵浸湬㵳栧瑴㩰⼯慪扢牥漮杲瀯潲潴潣⽬畴敮㸧愼瑲獩⽴㰾慲楴杮㸯猼畯捲⽥㰾楴汴㹥求湩潙牵慆楤杮传瑵⼼楴汴㹥琼慲正㸯甼楲㸯⼼畴敮㰾椯整㹭⼼瑩浥㹳⼼癥湥㹴攼牲牯挠摯㵥㔧㌰‧祴数✽慣据汥㸧猼牥楶散甭慮慶汩扡敬砠汭獮✽牵㩮敩晴瀺牡浡㩳浸㩬獮砺灭⵰瑳湡慺❳㸯⼼牥潲㹲⼼敭獳条㹥
Znaczy się coś zmienisz w kodzie AQQ w nowej wersji czy po prostu uważasz, że to mój błąd? Bo zmieniłem kod wtyczki i błąd nadal występuje:Aktualizacja statusu do: Do sprawdzenia
Zgłoszenie naprawione w wersji: 2.2.0.19
void SetStatus(UnicodeString SetStatusStatus, bool Force) { wchar_t* SetStatusStatusW = SetStatusStatus.w_str(); PluginLink.CallService(AQQ_FUNCTION_GETNETWORKSTATE,(WPARAM)(&PluginStateChange),0); PluginStateChange.cbSize = sizeof(TPluginStateChange); PluginStateChange.Status = SetStatusStatusW; PluginStateChange.Force = Force; PluginLink.CallService(AQQ_SYSTEM_SETSHOWANDSTATUS,0,(LPARAM)(&PluginStateChange)); }
Ale nadal nie jest to zmienna globalna.
Zmieniłem kod i dalej to samo:
wchar_t* SetStatusStatusW; void SetStatus(UnicodeString SetStatusStatus, bool Force) { SetStatusStatusW = SetStatusStatus.w_str(); PluginLink.CallService(AQQ_FUNCTION_GETNETWORKSTATE,(WPARAM)(&PluginStateChange),0); PluginStateChange.cbSize = sizeof(TPluginStateChange); PluginStateChange.Status = SetStatusStatusW; PluginStateChange.Force = Force; PluginLink.CallService(AQQ_SYSTEM_SETSHOWANDSTATUS,0,(LPARAM)(&PluginStateChange)); }
Aktualizacja statusu do: Zatwierdzono
Aktualizacja wersji do: 2.2.0.21
Zgłoszenie naprawione w wersji: Brak
Aktualizacja wersji do: 2.2.0.21
Zgłoszenie naprawione w wersji: Brak
Aktualizacja statusu do: Do uzupełnienia
Może problem leży w tym, że wypełniasz tylko 3 pola w strukturze. Zerujesz chociaż całą resztę?
Może problem leży w tym, że wypełniasz tylko 3 pola w strukturze. Zerujesz chociaż całą resztę?
type PPluginStateChange = ^TPluginStateChange; TPluginStateChange = record cbSize: Integer; OldState: Integer; NewState: Integer; Status: PWideChar; ByHand: Boolean; UserIdx: Integer; JID: PWideChar; Force: Boolean; Server: PWideChar; Authorized: Boolean; FromPlugin: Boolean; Resource: PWideChar; end;
Nawet jak wyzeruję całą resztę to problem i tak się pojawia.
Aktualizacja statusu do: Zatwierdzono
Poza tym Oconnelu kazałeś mi używać funkcji AQQ_FUNCTION_GETNETWORKSTATE przed wywołaniem AQQ_SYSTEM_SETSHOWANDSTATUS, która uzupełnia całą strukturę PluginStateChange! Więc co to ma do rzeczy czy uzupełnię pozostałe dane czy też je wyzeruję?
Aktualizacja statusu do: Odrzucono
Inaczej. Nie wiem w czym konkretnie leży problem, ale z objawów stawierdzam, że przekazujesz adres pamięci który nie zawiera lub zawierał a już nie zawiera zmiennej PPluginStateChange. Jeżeli wyłapiesz ten moment w debbugerze to z pewnością zobaczysz że nie przekazujesz prawidłowych danych. Problem nie leży zatem po stronie AQQ.
Inaczej. Nie wiem w czym konkretnie leży problem, ale z objawów stawierdzam, że przekazujesz adres pamięci który nie zawiera lub zawierał a już nie zawiera zmiennej PPluginStateChange. Jeżeli wyłapiesz ten moment w debbugerze to z pewnością zobaczysz że nie przekazujesz prawidłowych danych. Problem nie leży zatem po stronie AQQ.
Do jasnej cholery! Kiedyś to działało dobrze, dopiero z którąś wersję AQQ błąd zaczął występować a nic nie zmieniałem wtedy we wtyczce! Przestań zganiać błędy to róż na system lub po prostu zwyczajnie odrzucać.
I nawet nie denerwuj mnie odrzucając błąd ponownie! Zaczynam powoli mieć dość pisać cokolwiek do AQQ skoro na poprawę jednego błędu czekam parę miesięcy a na dodanie czegoś do SDK kilkanaście miesięcy. Grrrrrrrr!
Jak kurde nie po stronie AQQ?! To jak wyjaśnisz to, że gdy ten błąd występuje to tylko i wyłącznie w sieciach jabber a w sieciach pochodzących ze wtyczek opis ustawia się wówczas prawidłowo? Badałem to już wiele wiele razy. Błąd leży po stronie AQQ. Debugowałem, próbowałem wypełniać w pełni strukturę, bawiłem się ze zmiennymi itp. Nic nie daje.Jeżeli wyłapiesz ten moment w debbugerze to z pewnością zobaczysz że nie przekazujesz prawidłowych danych. Problem nie leży zatem po stronie AQQ.
I nawet nie denerwuj mnie odrzucając błąd ponownie! Zaczynam powoli mieć dość pisać cokolwiek do AQQ skoro na poprawę jednego błędu czekam parę miesięcy a na dodanie czegoś do SDK kilkanaście miesięcy. Grrrrrrrr!
Aktualizacja statusu do: Zatwierdzono
to róż -> co rusz
to róż -> co rusz
Aktualizacja statusu do: Do uzupełnienia
Przygotuj zatem mini wtyczkę obrazującą problem to sprawdzę to. W chwili obecnej nie widzę błędu po stronie AQQ.
Przygotuj zatem mini wtyczkę obrazującą problem to sprawdzę to. W chwili obecnej nie widzę błędu po stronie AQQ.
Aktualizacja statusu do: Odrzucono
Od miesiąca cisza w zgłoszeniu. Brak reakcji na prośbę o uzupełnienie. Brak możliwości kontaktu. Odrzucam.
Od miesiąca cisza w zgłoszeniu. Brak reakcji na prośbę o uzupełnienie. Brak możliwości kontaktu. Odrzucam.
Użytkownicy przeglądający to zgłoszenie: 0
0 użytkowników, 0 gości, 0 anonimowych