Arno Garrels wrote:
> The DLL names are globally writable typed constants, set their values
> before the OpenSSL libraries are loaded.

Is there any advantage to use writable typed constants like

 const GSSLEAY_DLL_Name : String  = 'SSLEAY32.DLL';

instead of

 var GSSLEAY_DLL_Name : String  = 'SSLEAY32.DLL';

?

Both seems to work but I try to avoid the first one whenever possible because
it can break multi-threading when not used properly. For example I had a
commercial component that contained code like this to save some code lines:

 procedure SomeProc();
 {$J+} // enable writeable consts
 const
    Buffer : array[0..31] of byte = (0, 0, ..., 0);
 {$J-} // disable writeable consts
 begin
    // read and write to Buffer like it's a variable
 end;

which caused problems when the procedure is used by different threads
simultaneously because all instances read and write to the same block in
memory.

I know this is not a problem with ICS but I wonder why writable consts are
used/preferred at all.

Regards,
Tobias

--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

Reply via email to