tmf: Bug 437841: NullPointerException in HistogramBucket
authorPatrick Tasse <patrick.tasse@gmail.com>
Fri, 20 Jun 2014 19:55:33 +0000 (15:55 -0400)
committerPatrick Tasse <patrick.tasse@gmail.com>
Tue, 8 Jul 2014 19:18:34 +0000 (15:18 -0400)
Change-Id: I5bd31107c826592cd7ffe41c73a441792470fa50
Signed-off-by: Patrick Tasse <patrick.tasse@gmail.com>
Reviewed-on: https://git.eclipse.org/r/28834
Tested-by: Hudson CI
Reviewed-by: Genevieve Bastien <gbastien+lttng@versatic.net>
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/HistogramBucket.java

index 95d4fcd0f4dd30a7bba8b82701c1aeff5e2bb820..0ff0b78cf99288c2496eb139b427088371de50f2 100644 (file)
@@ -8,6 +8,7 @@
  *
  * Contributors:
  *   Xavier Raynaud - Initial API and implementation
+ *   Patrick Tasse - Fix concurrency issue
  *******************************************************************************/
 package org.eclipse.linuxtools.tmf.ui.views.histogram;
 
@@ -37,8 +38,8 @@ public class HistogramBucket {
      */
     public HistogramBucket(int... values) {
         fEvents = values;
-        for (int i: fEvents) {
-            fNbEvents +=i;
+        for (int i : fEvents) {
+            fNbEvents += i;
         }
     }
 
@@ -71,16 +72,16 @@ public class HistogramBucket {
      * Add an event in this bucket
      * @param traceIndex a trace index - see {@link HistogramDataModel#setTrace}.
      */
-    public void addEvent(int traceIndex) {
-        this.fNbEvents++;
-        ensureCapacity(traceIndex+1);
+    public synchronized void addEvent(int traceIndex) {
+        ensureCapacity(traceIndex + 1);
         fEvents[traceIndex]++;
+        fNbEvents++;
     }
 
     private void ensureCapacity(int len) {
         if (fEvents == null) {
             fEvents = new int[len];
-        } else if (fEvents.length<len) {
+        } else if (fEvents.length < len) {
             int[] oldArray = fEvents;
             fEvents = new int[len];
             System.arraycopy(oldArray, 0, fEvents, 0, oldArray.length);
@@ -113,12 +114,14 @@ public class HistogramBucket {
      * Merge the given bucket in this one.
      * @param histogramBucket a bucket to merge in this one.
      */
-    public void add(HistogramBucket histogramBucket) {
+    public synchronized void add(HistogramBucket histogramBucket) {
         if (histogramBucket != null && histogramBucket.fNbEvents != 0) {
-            fNbEvents += histogramBucket.fNbEvents;
-            ensureCapacity(histogramBucket.fEvents.length);
-            for (int i = 0; i<histogramBucket.fEvents.length; i++) {
-                fEvents[i] += histogramBucket.fEvents[i];
+            int len = histogramBucket.fEvents.length;
+            ensureCapacity(len);
+            for (int i = 0; i < len; i++) {
+                int nbEvents = histogramBucket.fEvents[i];
+                fEvents[i] += nbEvents;
+                fNbEvents += nbEvents;
             }
         }
     }
This page took 0.028117 seconds and 5 git commands to generate.