[Bug] ProcedureReturn in Select-Verschachtelung

Hier kann alles mögliche diskutiert werden. Themen zu Purebasic sind hier erwünscht.
Flames und Spam kommen ungefragt in den Mülleimer.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

[Bug] ProcedureReturn in Select-Verschachtelung

Beitrag von NicTheQuick »

Ich brauch da nicht viel zu erklären, auf jeden Fall ist es ein Bug. [c]TestProc2()[/c] funktioniert wunderbar, während [c]TestProc1()[/c] bei der Rückgabe scheitert.
Ich benutze allerdings noch die Version 3.93. Es kann also sein, dass es in der jetztigen Beta schon behoben ist, aber ich wollte es eben nochmal sagen. :wink:

Code: Alles auswählen

Procedure.f TestProc1(a.l)
  Protected res.f
  
  Select a
    Case 0
      res = 1.5
      ProcedureReturn res
    Case 1
      res = 1.8
      ProcedureReturn res
  EndSelect
  
  ProcedureReturn 0
EndProcedure
Procedure.f TestProc2(a.l)
  Protected res.f
  
  res = 0
  Select a
    Case 0
      res = 1.5
    Case 1
      res = 1.8
  EndSelect
  
  ProcedureReturn res
EndProcedure

Debug TestProc2(0)
Debug TestProc1(0)
[c][/c]
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1765
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag von Andre »

An Fred gemeldet...
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Benutzeravatar
Lebostein
Beiträge: 674
Registriert: 13.09.2004 11:31
Wohnort: Erzgebirge

Beitrag von Lebostein »

Also der neue Debugger aus 3.94 meldet in TestProc1() unter "Case 0" in der Zeile "ProcedureReturn res" einen "Invalid memory access". Scheint ein Compilerproblem zu sein, denn an dem Code gibts ja nicht auszusetzen...
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Der Fehler liegt nur an der Rückgabe eines Floats. Denn mit einem Integer funktioniert es ja wunderbar, also [c]Procedure.l TestProc1()[/c].

Dank der OnError-Lib kannte ich den Fehler schon. Aber schön, dass der neue Debugger ihn auch endlich mal bemerkt und ausgibt. So langsam nervt es mich nämlich auch schon, dass ich immer die OnError-Lib für soetwas missbrauchen muss. :|

Aber die 3.94 saug ich mir erst, wenn sie keine Beta ist.
Antworten