PB3.94 u. PB4b11 Bug: PokeB und PokeS machen Fehler
Verfasst: 07.05.2006 20:39
Hi Leute,
bin gerade dabei die SNMP Library für PB4 umzuschreiben und hab dabei einen Fehler entdeckt der nicht sein sollte.
Hier mal der Code dazu
Wenn ich an der selben stelle ein Byte aendern will und sogar noch mit dem selben Zeichen dann sollte sich in der ausgabe nichts aendern, aber er fügt einfach nach der Stelle ein chr(0) ein und ueberschreibt damit den anderen Wert.
Desweitern hab ich bemerkt wenn man z.B. zuwenig speicher mit AllocateMemory reserviert kann man trotzdem beliebig viele Zeichen in den Speicher schreiben....
Kann mir vorstellen das es normal ist, auch in anderen Sprachen wie in C z.B., nur das der Programmierer selber aufpassen muss was er machen muss. Sonst kann es evtl zu einer Speicherverletzung kommen.
Aber der Bug oben sollte nicht sein... Bitte PRüfen und dann weiterleiten wenn es sich bestätigt. Kann sein das es in den anderen Pokebefehlen auch so ist und nicht nur bei PokeB und PokeS
Gruß,
Torakas
bin gerade dabei die SNMP Library für PB4 umzuschreiben und hab dabei einen Fehler entdeckt der nicht sein sollte.
Hier mal der Code dazu
Code: Alles auswählen
*test = AllocateMemory(1024)
PokeS(*test + 0, "1", 1)
PokeS(*test + 1, "2", 1)
PokeS(*test + 2, "3", 1)
PokeS(*test + 3, "4", 1)
PokeS(*test + 4, "5", 1)
; Fehlerfreie Ausgabe
Debug PeekS(*test)
; Aendere zweite Stelle durch das selbe Zeichen
; sollte keine Aenderung geben
PokeS(*test + 1, "2", 1)
; Ausgabe was jetzt rauskommt
Debug PeekS(*test)
; Gib einfach mal den Ascii Wert aus um zu sehen was jetzt drinne ist
Debug ""
For i = 0 To 4
Debug Asc(PeekS(*test + i, 1))
Next i
Desweitern hab ich bemerkt wenn man z.B. zuwenig speicher mit AllocateMemory reserviert kann man trotzdem beliebig viele Zeichen in den Speicher schreiben....
Kann mir vorstellen das es normal ist, auch in anderen Sprachen wie in C z.B., nur das der Programmierer selber aufpassen muss was er machen muss. Sonst kann es evtl zu einer Speicherverletzung kommen.
Aber der Bug oben sollte nicht sein... Bitte PRüfen und dann weiterleiten wenn es sich bestätigt. Kann sein das es in den anderen Pokebefehlen auch so ist und nicht nur bei PokeB und PokeS
Gruß,
Torakas