Resolving DevExpress ASPX HtmlEditor error

Recently I got the following error when using the DevExpress.com HTML editor control for ASP.NET.

Message: Invalid argument.
Line: 1147
Char: 3
Code: 0
URI:
http://www.zeta-producer.com/modules1-admin/DXR.axd?r=1_103

This error only occurred only in Internet Explorer and only in our production environment, not with Firefox or Google Chrome, not in the test environment.

After some searching, I found out:

  • The issue occurs somewhat near the „_aspxCreateStyleSheet“ function.
  • A poster in the DevExpress forum experiences a similar issue when using too much style sheets.

Since I am using the ASP.NET „App_Themes“ folder with a lot of style sheets, I thought that this may be my issue, too.

Resolution

By placing the following keys in the „appSettings“ section of the „web.config“ file on our production servers, I resolved the issue.

<add key=“DXEnableCallbackCompression“ value=“true“/>
<add key=“
DXEnableResourceCompression“ value=“true“/>
<add key=“DXEnableResourceMerging“ value=“true“/>
<add key=“DXEnableHtmlCompression“ value=“true“/>

I assume that the „DXEnableResourceCompression“ key probably merges multiple CSS files into one CSS, thus resolving the issue.

Please note that these „appSettings“ keys requires you to have a newer version of the DevExpress.com libraries (9.2 if I recall correctly).

AllocSysString

Hartnäckigkeit zahlt sich oft aus: Heute habe ich ein Speicherleck (englisch „Memory leak“) in Zeta Producer korrigiert, das seit Version 5 drin war:

Beim Aufruf der Microsoft Scripting Engine habe ich beim Aufruf der Funktion IActiveScriptParse::ParseScriptText irrtümlicherweise CStringT::AllocSysString aufgerufen und den so angeforderten Speicher selbst nicht mehr freigegeben. Dies hätte ich jedoch machen müssen, was ich in der korrigierten Version nun mache.

Das hätte ich aber machen sollen! „RTFM“ hat Mario mir da gleich geantwortet als ich es ihm erzählt habe.

Hiermit also nochmals der ultimative Artikel wann wer für die Freigabe von Zeichenfolgen die mittels AllocSysString reserviert wurden verantwortlich ist: „Allocating and Releasing Memory for a BSTR (Visual C++ Concepts)„.