diff options
Diffstat (limited to 'sal')
-rwxr-xr-x | sal/rtl/source/memory_fini.cxx | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/sal/rtl/source/memory_fini.cxx b/sal/rtl/source/memory_fini.cxx new file mode 100755 index 000000000000..99c957a739c3 --- /dev/null +++ b/sal/rtl/source/memory_fini.cxx @@ -0,0 +1,57 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: memory_fini.cxx,v $ + * $Revision: 1.2 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + + +/* + Issue http://udk.openoffice.org/issues/show_bug.cgi?id=92388 + + Mac OS X does not seem to support "__cxa__atexit", thus leading + to the situation that "__attribute__((destructor))__" functions + (in particular "rtl_memory_fini") become called _before_ global + C++ object d'tors. + + Using a C++ dummy object instead. +*/ + +#include <stdio.h> + +extern "C" void rtl_memory_fini (void); + + +struct RTL_Memory_Fini { + ~RTL_Memory_Fini() ; +}; + +RTL_Memory_Fini::~RTL_Memory_Fini() { + rtl_memory_fini(); +} + + +static RTL_Memory_Fini rtl_Memory_Fini; |