Yuri Dario wrote:
> Hi Stephan,
>
>
> I looked at new main.h code, and I propose to change it
as follows:
>
> #ifdef SAL_OS2
>
> int SAL_CALL osl_setExceptionHook( void);
> int SAL_CALL osl_unsetExceptionHook( void);
> #define SET_EXCEPTION_HOOK if
(osl_setExceptionHook()==0) {
> #define UNSET_EXCEPTION_HOOK }
osl_unsetExceptionHook()
>
> #else
>
> #define SET_EXCEPTION_HOOK
> #define UNSET_EXCEPTION_HOOK
>
> #endif
>
> #define SAL_MAIN_WITH_ARGS_IMPL
> int SAL_CALL main(int argc, char ** argv)
> {
> int rc;
> SET_EXCEPTION_HOOK;
> osl_setCommandArgs(argc, argv);
> rc = sal_main_with_args(argc, argv);
> UNSET_EXCEPTION_HOOK;
> return rc;
> }
>
> #define SAL_MAIN_IMPL
> int SAL_CALL main(int argc, char ** argv)
> {
> int rc;
> SET_EXCEPTION_HOOK;
> osl_setCommandArgs(argc, argv);
> rc = sal_main();
> UNSET_EXCEPTION_HOOK;
> return rc;
> }
>
>
> the new macros are used to install the OS/2 exception
handler, so I can
> wrap program execution and dump stack frames at crash.
>
> If you know a better way to put it in common code,
please let me know.
On CWS sb71, we faced a similar problem (needing
initialization and
deinitialization around sal_main on Windows) and changed
SAL_MAIN_WITH_ARGS_IMPL (and correspondingly SAL_MAIN_IMPL)
to
#define SAL_MAIN_WITH_ARGS_IMPL
int SAL_CALL main(int argc, char ** argv)
{
int ret;
sal_detail_initialize(argc, argv);
ret = sal_main_with_args(argc, argv);
sal_detail_deinitialize();
return ret;
}
(see sal/rtl/sal/main.h:1.7.68.2 l. 50--58). CWS sb71 is
not yet
integrated, but planned to be ready for integration on
October 5. So I
would suggest you move your OS/2-specific
osl_[un]setExceptionHook
functionality into sal_detail_[de]initialize once CWS sb71
is
integrated. (Also, it is probably not a good idea anyway to
silently
not execute rc=sal_main() when osl_setExceptionHook fails
and return a
random uninitialized rc; abort is probably what you want.)
You also no
longer need the changes in sal/util/makefile.mk:1.44.4.1
then.
-Stephan
------------------------------------------------------------
---------
To unsubscribe, e-mail: dev-unsubscribe porting.openoffice.org
For additional commands, e-mail: dev-help porting.openoffice.org
|