Matthias Huetsch wrote:
Hi Stephan,

Stephan Bergmann wrote:
Folks,

On CWS sb71 it turned out we need to move code on Windows from sal
DllMain to global main.  Hennes just did that and added two symbols to
the sal API (sal_initialize, sal_deinitialize).

As a side note: Though I do understand why these changes are necessary,
may I still regard them as "ugly" (IMHO, of course)?

Dead ugly I consider them, too, but probably for another reason than you do: They are an incompatible change. (A Windows executable compiled against old sal and run against new sal will neither execute sal's initialization code in sal's DllMain---it has been removed from there---nor execute sal_initialize---that call is inline in main.h, so old code does not get it. There hopefully are ca. zero Windows executables built on URE out there in the wild, so we hopefully get away with this.)

In hindsight, when the need to call *some* initialization (osl_setCommandArgs) from main got catered for in sal/inc/sal/main.h:1.4 it would have been better to once-and-for-all cater for *any future* initialization needs, by introducing sal_initialize right from the start, and calling osl_setCommandArgs from within sal_initialize. (And we cannot now move the call to osl_setCommandArgs from main to sal_initialze, for those compatibility reasons.)

A further thought: Do we need sal_deinitialize (only called when sal_main[with_args] returns normally) or would it be better to execute any necessary deinitialization through atexit (thus also called when calling exit)? I would tend to think we should use atexit instead of sal_deinitialize, but the above paragraph suggests that we probably should be non-conservative in adding hooks into main.h? Again, opinions anyone?

[...]

If the former, we could and should make sal_[de]initialize "URE private"
symbols (that are publicly exported from sal, but not intended to be
explicitly called from client code), move them in
sal/util/sal.map:1.58.12.3 from section UDK_3.7 to section PRIVATE_1.1,
and probably rename them to sal_detail_[de]initialize (to match the
naming convention of the symbols already present in section PRIVATE_1.0).

With a "yes" to the first question, this is also "Yes", please make them
private.

Yes, will do.

-Stephan

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to