WC3 Modding Information Center

Warcraft (WC3) Modding => Warcraft III Resources => WC3 Editing Tools => Topic started by: Glowackos on November 27, 2014, 09:39:52 AM


Average Score - 5 / 5

« Created: April 09, 2016, 07:12:10 PM by moyack »
Title: Jasshelper 2014-03-10
Post by: Glowackos on November 27, 2014, 09:39:52 AM
Version: 2014-03-10
Keywords: Jasshelper, Glowackos, Bugfix
Operating System (OS):
  • Windows XP
  • Windows Vista
  • Windows 7
  • Windows 8
Tool Category: Jass Scripting, World Editor (WE) Add on or plugin
Rating: 5
Warcraft III Tool resource
Code: jass
  1. //=====================================
  2. //  Jasshelper 2014-03-10 Changelog
  3. //=====================================
  4. * Fixed a bug with deallocate on extended structs that used onDestroy.
  5. * Increased the stacksize in pjass.exe

This is a bugfix I posted a while ago, but it got deleted with the forum update, so posting here again.
Basically, for some reason there's two struct writers in the code, which get along pretty well for the most part, creating little more than a bit of bloatcode in the worst case. However, when using extended struct allocation (eg. struct MyStruct[32000]), the wrong struct writer occasionally* writes the deallocate function, failing to properly handle instances above the 8191, resulting in leaked, inde-struct-ible struct instances. Re-iterating: anything with an index above 8191 cannot be deallocated.

*It actually depends on the properties of the previous struct that was written, since some variable doesn't get updated. IIRC this was tied to whether or not the struct was using its own onDestroy() method or not. (I don't quite remember anymore; it was a while ago)

This update ensures only one of the writers (the proper one) writes all of the deallocation functions, addressing the bug described above, along with reducing some of the bloat code. There's still much more to be culled (whoever wrote the new struct writer should've properly removed the old one..), but this would require more time, and possibility introduce new bugs. The important part is that the bug is fixed, and that the remaining bloatcode isn't causing any grief.

Lucky you! This package contains a two-in-one bundle!
I've also increased the stacksize of the included pjass.exe. This will likely have no effect for most of you, but it will allow very big maps to get parsed, rather than throwing a stack overflow error when you try to click save in JNGP. The map I'm working on requires this; who knows maybe there are others out there who will find it useful?

The attached zip file contains all of the source code, so feel free to do a diff against the previous version if you have any questions, queries of quandaries. (I probably won't be able to help much as I don't really remember much about this anymore.)
Title: Re: Jasshelper 2014-03-10
Post by: moyack on November 28, 2014, 07:55:47 AM
Awesome modification :D

In the upcoming version of JNGP, I'll include this modification into the system.

Thanks for reuploading it :)