Calling DepleteAmmo in DECORATE crashes.

Forum rules
Please don't bump threads here if you have a problem - it will often be forgotten about if you do. Instead, make a new thread here.

Post a reply

Smilies
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :geek: :ugeek: :!: :?: :idea: :arrow: :| :mrgreen: :3: :wub: >:( :blergh:
View more smilies

BBCode is OFF
Smilies are ON

Topic review
   

Expand view Topic review: Calling DepleteAmmo in DECORATE crashes.

Re: Calling DepleteAmmo in DECORATE crashes.

by _mental_ » Sun Jun 07, 2020 6:03 am

Fixed in 0e84739.

Re: Calling DepleteAmmo in DECORATE crashes.

by Graf Zahl » Sun May 24, 2020 10:52 am

I don't know how to plug this in DECORATE.

Re: Calling DepleteAmmo in DECORATE crashes.

by phantombeta » Sun May 24, 2020 1:52 am

Graf Zahl wrote:DepleteAmmo cannot be used from DECORATE. The function would be called with the wrong parameters, but unfortunately the compiler cannot easily detect this. The function needs to be visible for ZScript to compile, but that means it's also visible to DECORATE. Only functions whose name starts with A_ are DECORATE safe. Adding any restriction here could block valid use cases.
I told him to make this report. The point of it is not that he thinks it should work - he knows that, it's the crash that's the issue.

Re: Calling DepleteAmmo in DECORATE crashes.

by Graf Zahl » Sat May 23, 2020 11:51 pm

DepleteAmmo cannot be used from DECORATE. The function would be called with the wrong parameters, but unfortunately the compiler cannot easily detect this. The function needs to be visible for ZScript to compile, but that means it's also visible to DECORATE. Only functions whose name starts with A_ are DECORATE safe. Adding any restriction here could block valid use cases.

Calling DepleteAmmo in DECORATE crashes.

by Accensus » Sat May 23, 2020 6:40 pm

Tested on GZDoom g4.4pre-326-g3dfb417f0 x64.

1. give CrashyPistol
2. use CrashyPistol

I assume this isn't an issue only with DepleteAmmo; it just so happened that it crashed on me with that. If I use it in an anonymous function, it errors out properly (i.e. complains about trying to call it with incompatible self-pointer, which isn't gonna happen in DECORATE).

Code: Select all

Actor CrashyPistol : Pistol
{
	States
	{
		Fire:
		    PISG A 4 DepleteAmmo(false, false, 1)
		    PISG B 6 A_FirePistol
		    PISG C 4
		    PISG B 5 A_ReFire
		    Goto Ready
	}
}
Attached CrashReport.zip.
Attachments
CrashReport.zip
(37.44 KiB) Downloaded 28 times

Top