Page 1 of 1

Calling DepleteAmmo in DECORATE crashes.

PostPosted: Sat May 23, 2020 6:40 pm
by Accensus
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 allExpand view
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.

Re: Calling DepleteAmmo in DECORATE crashes.

PostPosted: Sat May 23, 2020 11:51 pm
by Graf Zahl
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.

Re: Calling DepleteAmmo in DECORATE crashes.

PostPosted: Sun May 24, 2020 1:52 am
by phantombeta
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.

PostPosted: Sun May 24, 2020 10:52 am
by Graf Zahl
I don't know how to plug this in DECORATE.

Re: Calling DepleteAmmo in DECORATE crashes.

PostPosted: Sun Jun 07, 2020 6:03 am
by _mental_
Fixed in 0e84739.