Archive: 404 error with Inetc corrupts the stack when /END is used


404 error with Inetc corrupts the stack when /END is used
I'm storing some registers on the stack and then using the Inetc plugin (in NSISdl mode) to download a file using an Inetc::get command which has /END at the end.

If the download is successful the plugin leaves one value on the stack (OK) but if the file is not found then the plugin leaves two values on the stack (on my Win98SE system):

File not found (404)
/END

My code checks the Inetc result by popping the result from the stack. Since my code did not expect this extra value (/END) some register corruption occurred when my code used the stack to restore the registers.

As a workaround I'm checking to see if /END is left on the stack when Inetc does not return "OK".


Yes, plug-in stops reading stack on error.. I'll add patch soon. Thanks, pengyou. May multi-download mode is excessive (not required in real life)? This case /end not required and it is easy to fix situation..


Thanks for the quick response.

Although my installer uses Inetc to download several files it only downloads one file at a time (I've never used the multi-download mode).


The "1 January 2007" version of Inetc was leaving /END on the stack when it detected an error:

File Not Found (404)
/END
data-x
data-y
data-z

The "17 January 2007" version of the Inetc plugin leaves the stack with just one value on it if an error is detected:

File Not Found (404)

This means my installer is unable to restore the data-x, data-y and data-z values.


Sorry. Updated. Good news - popstring not crashes on null pointer ;)


The new "18 January 2007" version of Inetc solves my problem.

Thanks for fixing it so quickly!