Bug Summary

File:stoc/source/registry_tdprovider/tdmodule.cxx
Location:line 81, column 17
Description:Called C++ object pointer is null

Annotated Source Code

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
21#include <vector>
22#include <osl/diagnose.h>
23#include "base.hxx"
24
25namespace stoc_rdbtdp
26{
27
28//__________________________________________________________________________________________________
29// virtual
30ModuleTypeDescriptionImpl::~ModuleTypeDescriptionImpl()
31{
32 delete _pMembers;
33
34 g_moduleCount.modCnt.release( &g_moduleCount.modCnt );
35}
36
37// XTypeDescription
38//__________________________________________________________________________________________________
39// virtual
40TypeClass ModuleTypeDescriptionImpl::getTypeClass()
41 throw( RuntimeException )
42{
43 return TypeClass_MODULE;
44}
45//__________________________________________________________________________________________________
46// virtual
47OUString ModuleTypeDescriptionImpl::getName()
48 throw( RuntimeException )
49{
50 return _aName;
51}
52
53// XModuleTypeDescription
54//__________________________________________________________________________________________________
55// virtual
56Sequence< Reference< XTypeDescription > > SAL_CALL
57ModuleTypeDescriptionImpl::getMembers()
58 throw ( RuntimeException )
59{
60 if ( !_pMembers )
1
Taking true branch
61 {
62 Reference< XTypeDescriptionEnumeration > xEnum;
63 try
64 {
65 xEnum = _xTDMgr->createTypeDescriptionEnumeration(
66 _aName,
67 Sequence< TypeClass >(),
68 TypeDescriptionSearchDepth_ONE );
69 }
70 catch ( NoSuchTypeNameException const & )
71 {
72 }
73 catch ( InvalidTypeNameException const & )
74 {
75 }
76
77 OSL_ENSURE( xEnum.is(),do { if (true && (!(xEnum.is()))) { sal_detail_logFormat
((SAL_DETAIL_LOG_LEVEL_WARN), ("legacy.osl"), ("/usr/local/src/libreoffice/stoc/source/registry_tdprovider/tdmodule.cxx"
":" "78" ": "), "%s", "ModuleTypeDescriptionImpl::getMembers - No enumeration!"
); } } while (false)
78 "ModuleTypeDescriptionImpl::getMembers - No enumeration!" )do { if (true && (!(xEnum.is()))) { sal_detail_logFormat
((SAL_DETAIL_LOG_LEVEL_WARN), ("legacy.osl"), ("/usr/local/src/libreoffice/stoc/source/registry_tdprovider/tdmodule.cxx"
":" "78" ": "), "%s", "ModuleTypeDescriptionImpl::getMembers - No enumeration!"
); } } while (false)
;
79
80 std::vector< Reference< XTypeDescription > > aTDs;
81 while ( xEnum->hasMoreElements() )
2
Called C++ object pointer is null
82 {
83 try
84 {
85 Reference< XTypeDescription > xTD(
86 xEnum->nextTypeDescription() );
87 aTDs.push_back( xTD );
88 }
89 catch ( NoSuchElementException const & )
90 {
91 OSL_FAIL( "ModuleTypeDescriptionImpl::getMembers - "do { if (true && (((sal_Bool)1))) { sal_detail_logFormat
((SAL_DETAIL_LOG_LEVEL_WARN), ("legacy.osl"), ("/usr/local/src/libreoffice/stoc/source/registry_tdprovider/tdmodule.cxx"
":" "92" ": "), "%s", "ModuleTypeDescriptionImpl::getMembers - "
" Caught NoSuchElementException!"); } } while (false)
92 " Caught NoSuchElementException!" )do { if (true && (((sal_Bool)1))) { sal_detail_logFormat
((SAL_DETAIL_LOG_LEVEL_WARN), ("legacy.osl"), ("/usr/local/src/libreoffice/stoc/source/registry_tdprovider/tdmodule.cxx"
":" "92" ": "), "%s", "ModuleTypeDescriptionImpl::getMembers - "
" Caught NoSuchElementException!"); } } while (false)
;
93 }
94 }
95
96 Sequence< Reference< XTypeDescription > > * pMembers
97 = new Sequence< Reference< XTypeDescription > >( aTDs.size() );
98 for ( sal_Int32 n = 0; n < pMembers->getLength(); n++ )
99 (*pMembers)[ n ] = aTDs[ n ];
100
101 ClearableMutexGuard aGuard( getMutex() );
102 if ( _pMembers )
103 {
104 aGuard.clear();
105 delete pMembers;
106 }
107 else
108 {
109 _pMembers = pMembers;
110 }
111 }
112 return *_pMembers;
113}
114
115}
116
117/* vim:set shiftwidth=4 softtabstop=4 expandtab: */