File: | stoc/source/registry_tdprovider/tdsingleton.cxx |
Location: | line 53, column 20 |
Description: | Called C++ object pointer is null |
1 | /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ | |||
2 | /* | |||
3 | * This file is part of the LibreOffice project. | |||
4 | * | |||
5 | * This Source Code Form is subject to the terms of the Mozilla Public | |||
6 | * License, v. 2.0. If a copy of the MPL was not distributed with this | |||
7 | * file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
8 | * | |||
9 | * This file incorporates work covered by the following license notice: | |||
10 | * | |||
11 | * Licensed to the Apache Software Foundation (ASF) under one or more | |||
12 | * contributor license agreements. See the NOTICE file distributed | |||
13 | * with this work for additional information regarding copyright | |||
14 | * ownership. The ASF licenses this file to you under the Apache | |||
15 | * License, Version 2.0 (the "License"); you may not use this file | |||
16 | * except in compliance with the License. You may obtain a copy of | |||
17 | * the License at http://www.apache.org/licenses/LICENSE-2.0 . | |||
18 | */ | |||
19 | ||||
20 | #include <osl/diagnose.h> | |||
21 | #include "base.hxx" | |||
22 | ||||
23 | #include "com/sun/star/uno/RuntimeException.hpp" | |||
24 | ||||
25 | using namespace com::sun::star; | |||
26 | ||||
27 | namespace stoc_rdbtdp | |||
28 | { | |||
29 | ||||
30 | void SingletonTypeDescriptionImpl::init() { | |||
31 | { | |||
32 | MutexGuard guard(getMutex()); | |||
33 | if (_xInterfaceTD.is() || _xServiceTD.is()) { | |||
34 | return; | |||
35 | } | |||
36 | } | |||
37 | Reference< XTypeDescription > base; | |||
38 | try { | |||
39 | base = Reference< XTypeDescription >( | |||
40 | _xTDMgr->getByHierarchicalName(_aBaseName), UNO_QUERY_THROW); | |||
41 | } catch (NoSuchElementException const & e) { | |||
42 | throw RuntimeException( | |||
43 | (OUString( | |||
44 | RTL_CONSTASCII_USTRINGPARAM((&("com.sun.star.container.NoSuchElementException: ")[0]) , ((sal_Int32)((sizeof ("com.sun.star.container.NoSuchElementException: " ) / sizeof (("com.sun.star.container.NoSuchElementException: " )[0]))-1)), (((rtl_TextEncoding) 11)) | |||
45 | "com.sun.star.container.NoSuchElementException: ")(&("com.sun.star.container.NoSuchElementException: ")[0]) , ((sal_Int32)((sizeof ("com.sun.star.container.NoSuchElementException: " ) / sizeof (("com.sun.star.container.NoSuchElementException: " )[0]))-1)), (((rtl_TextEncoding) 11))) | |||
46 | + e.Message), | |||
47 | static_cast< OWeakObject * >(this)); | |||
48 | } | |||
49 | MutexGuard guard(getMutex()); | |||
50 | if (!_xInterfaceTD.is() && !_xServiceTD.is()) { | |||
51 | if (resolveTypedefs(base)->getTypeClass() == TypeClass_INTERFACE) { | |||
52 | _xInterfaceTD = base; | |||
53 | } else if (base->getTypeClass() == TypeClass_SERVICE) { | |||
| ||||
54 | _xServiceTD = Reference< XServiceTypeDescription >( | |||
55 | base, UNO_QUERY_THROW); | |||
56 | } else { | |||
57 | throw RuntimeException( | |||
58 | OUString( | |||
59 | RTL_CONSTASCII_USTRINGPARAM((&("Singleton is based on neither interface nor service") [0]), ((sal_Int32)((sizeof ("Singleton is based on neither interface nor service" ) / sizeof (("Singleton is based on neither interface nor service" )[0]))-1)), (((rtl_TextEncoding) 11)) | |||
60 | "Singleton is based on neither interface nor service")(&("Singleton is based on neither interface nor service") [0]), ((sal_Int32)((sizeof ("Singleton is based on neither interface nor service" ) / sizeof (("Singleton is based on neither interface nor service" )[0]))-1)), (((rtl_TextEncoding) 11))), | |||
61 | static_cast< OWeakObject * >(this)); | |||
62 | } | |||
63 | } | |||
64 | OSL_ASSERT(_xInterfaceTD.is() ^ _xServiceTD.is())do { if (true && (!(_xInterfaceTD.is() ^ _xServiceTD. is()))) { sal_detail_logFormat((SAL_DETAIL_LOG_LEVEL_WARN), ( "legacy.osl"), ("/usr/local/src/libreoffice/stoc/source/registry_tdprovider/tdsingleton.cxx" ":" "64" ": "), "OSL_ASSERT: %s", "_xInterfaceTD.is() ^ _xServiceTD.is()" ); } } while (false); | |||
65 | } | |||
66 | ||||
67 | //__________________________________________________________________________________________________ | |||
68 | // virtual | |||
69 | SingletonTypeDescriptionImpl::~SingletonTypeDescriptionImpl() | |||
70 | { | |||
71 | g_moduleCount.modCnt.release( &g_moduleCount.modCnt ); | |||
72 | } | |||
73 | ||||
74 | // XTypeDescription | |||
75 | //__________________________________________________________________________________________________ | |||
76 | // virtual | |||
77 | TypeClass SingletonTypeDescriptionImpl::getTypeClass() | |||
78 | throw(::com::sun::star::uno::RuntimeException) | |||
79 | { | |||
80 | return TypeClass_SINGLETON; | |||
81 | } | |||
82 | //__________________________________________________________________________________________________ | |||
83 | // virtual | |||
84 | OUString SingletonTypeDescriptionImpl::getName() | |||
85 | throw(::com::sun::star::uno::RuntimeException) | |||
86 | { | |||
87 | return _aName; | |||
88 | } | |||
89 | ||||
90 | // XSingletonTypeDescription | |||
91 | //__________________________________________________________________________________________________ | |||
92 | // virtual | |||
93 | Reference< XServiceTypeDescription > SAL_CALL | |||
94 | SingletonTypeDescriptionImpl::getService() | |||
95 | throw(::com::sun::star::uno::RuntimeException) | |||
96 | { | |||
97 | init(); | |||
98 | return _xServiceTD; | |||
99 | } | |||
100 | ||||
101 | // XSingletonTypeDescription2 | |||
102 | //______________________________________________________________________________ | |||
103 | // virtual | |||
104 | sal_Bool SAL_CALL | |||
105 | SingletonTypeDescriptionImpl::isInterfaceBased() | |||
106 | throw(::com::sun::star::uno::RuntimeException) | |||
107 | { | |||
108 | init(); | |||
109 | return _xInterfaceTD.is(); | |||
110 | } | |||
111 | ||||
112 | //______________________________________________________________________________ | |||
113 | // virtual | |||
114 | Reference< XTypeDescription > SAL_CALL | |||
115 | SingletonTypeDescriptionImpl::getInterface() | |||
116 | throw(::com::sun::star::uno::RuntimeException) | |||
117 | { | |||
118 | init(); | |||
| ||||
119 | return _xInterfaceTD; | |||
120 | } | |||
121 | ||||
122 | } | |||
123 | ||||
124 | /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |