X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=xmltooling%2Futil%2FThreads.h;h=abb8c10b8ae37dffffb227b6b9ae8850a58984ac;hb=81b488b2790e7bdeb2f43560b1d4a7d22c3dfdf5;hp=443009ca818f5f768cc66a730f7a518848cda8b7;hpb=60dc6e5775e6b87522771b0f8de70f78913658f0;p=shibboleth%2Fcpp-xmltooling.git diff --git a/xmltooling/util/Threads.h b/xmltooling/util/Threads.h index 443009c..abb8c10 100644 --- a/xmltooling/util/Threads.h +++ b/xmltooling/util/Threads.h @@ -1,23 +1,27 @@ -/* - * Copyright 2001-2010 Internet2 +/** + * Licensed to the University Corporation for Advanced Internet + * Development, Inc. (UCAID) under one or more contributor license + * agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + * UCAID licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the + * License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the License. */ /** * @file xmltooling/util/Threads.h * - * Thread and locking wrappers + * Thread and locking wrappers. */ #ifndef _xmltooling_threads_h @@ -128,7 +132,7 @@ namespace xmltooling /** * Returns the value for a TLS key. * - * @return the value or NULL + * @return the value or nullptr */ virtual void* getData() const=0; @@ -287,14 +291,16 @@ namespace xmltooling * @param mtx mutex to lock */ Lock(Mutex* mtx) : mutex(mtx) { - mutex->lock(); + if (mutex) + mutex->lock(); } /** * Unlocks the wrapped mutex. */ ~Lock() { - mutex->unlock(); + if (mutex) + mutex->unlock(); } private: @@ -314,7 +320,7 @@ namespace xmltooling * @param lockit true if the lock should be acquired here, false if already acquired */ SharedLock(RWLock* lock, bool lockit=true) : rwlock(lock) { - if (lockit) + if (rwlock && lockit) rwlock->rdlock(); } @@ -322,7 +328,8 @@ namespace xmltooling * Unlocks the wrapped shared lock. */ ~SharedLock() { - rwlock->unlock(); + if (rwlock) + rwlock->unlock(); } private: