Return-Path: X-Original-To: apmail-celix-commits-archive@www.apache.org Delivered-To: apmail-celix-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 9378A19A0B for ; Mon, 11 Apr 2016 10:54:30 +0000 (UTC) Received: (qmail 8942 invoked by uid 500); 11 Apr 2016 10:54:30 -0000 Delivered-To: apmail-celix-commits-archive@celix.apache.org Received: (qmail 8863 invoked by uid 500); 11 Apr 2016 10:54:29 -0000 Mailing-List: contact commits-help@celix.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@celix.apache.org Delivered-To: mailing list commits@celix.apache.org Received: (qmail 8245 invoked by uid 99); 11 Apr 2016 10:54:29 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 11 Apr 2016 10:54:29 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 0A530E012C; Mon, 11 Apr 2016 10:54:29 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: pnoltes@apache.org To: commits@celix.apache.org Date: Mon, 11 Apr 2016 10:54:39 -0000 Message-Id: In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [12/50] celix git commit: CELIX-344: Fix wrong assumption that a service references always is tracked when untracking int the service tracker. CELIX-344: Fix wrong assumption that a service references always is tracked when untracking int the service tracker. Project: http://git-wip-us.apache.org/repos/asf/celix/repo Commit: http://git-wip-us.apache.org/repos/asf/celix/commit/c4a34a98 Tree: http://git-wip-us.apache.org/repos/asf/celix/tree/c4a34a98 Diff: http://git-wip-us.apache.org/repos/asf/celix/diff/c4a34a98 Branch: refs/heads/release/celix-2.0.0 Commit: c4a34a9802f7a9a75fd4e819915fd6de189f92a0 Parents: 37010fb Author: Pepijn Noltes Authored: Thu Feb 4 15:55:38 2016 +0100 Committer: Pepijn Noltes Committed: Thu Feb 4 15:55:38 2016 +0100 ---------------------------------------------------------------------- framework/private/src/service_tracker.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/celix/blob/c4a34a98/framework/private/src/service_tracker.c ---------------------------------------------------------------------- diff --git a/framework/private/src/service_tracker.c b/framework/private/src/service_tracker.c index 1d4e4aa..42ac254 100644 --- a/framework/private/src/service_tracker.c +++ b/framework/private/src/service_tracker.c @@ -382,6 +382,7 @@ static celix_status_t serviceTracker_untrack(service_tracker_pt tracker, service celix_status_t status = CELIX_SUCCESS; tracked_pt tracked = NULL; unsigned int i; + bool found = false; celixThreadRwlock_writeLock(&tracker->lock); for (i = 0; i < arrayList_size(tracker->trackedServices); i++) { @@ -389,13 +390,14 @@ static celix_status_t serviceTracker_untrack(service_tracker_pt tracker, service tracked = (tracked_pt) arrayList_get(tracker->trackedServices, i); serviceReference_equals(reference, tracked->reference, &equals); if (equals) { + found = true; arrayList_remove(tracker->trackedServices, i); break; } } celixThreadRwlock_unlock(&tracker->lock); - if (tracked != NULL) { + if (found && tracked != NULL) { serviceTracker_invokeRemovingService(tracker, tracked->reference, tracked->service); free(tracked); bundleContext_ungetServiceReference(tracker->context, reference);