OSDN Git Service

WorkSource: Fix NPE on set(int) / set(int, String).
authorNarayan Kamath <narayan@google.com>
Thu, 21 Dec 2017 09:43:38 +0000 (09:43 +0000)
committerNarayan Kamath <narayan@google.com>
Thu, 21 Dec 2017 10:24:52 +0000 (10:24 +0000)
mChains might be null.

Bug: 62390666
Test: WorkSourceTest
Test: run cts-dev -m CtsOsTestCases -t android.os.cts.WorkSourceTest
Change-Id: I1dbc2abc576c280ad41ad6214745b0d34c5727a0

core/java/android/os/WorkSource.java
core/tests/coretests/src/android/os/WorkSourceTest.java

index 8632aad..bf145a0 100644 (file)
@@ -266,7 +266,9 @@ public class WorkSource implements Parcelable {
         if (mUids == null) mUids = new int[2];
         mUids[0] = uid;
         mNames = null;
-        mChains.clear();
+        if (mChains != null) {
+            mChains.clear();
+        }
     }
 
     /** @hide */
@@ -281,7 +283,9 @@ public class WorkSource implements Parcelable {
         }
         mUids[0] = uid;
         mNames[0] = name;
-        mChains.clear();
+        if (mChains != null) {
+            mChains.clear();
+        }
     }
 
     /**
index 7350db7..704b780 100644 (file)
@@ -205,4 +205,17 @@ public class WorkSourceTest extends TestCase {
         ws.add(ws2);
         assertEquals(2, workChains.size());
     }
+
+    public void testSet_noWorkChains() {
+        WorkSource ws = new WorkSource();
+        ws.set(10);
+        assertEquals(1, ws.size());
+        assertEquals(10, ws.get(0));
+
+        WorkSource ws2 = new WorkSource();
+        ws2.set(20, "foo");
+        assertEquals(1, ws2.size());
+        assertEquals(20, ws2.get(0));
+        assertEquals("foo", ws2.getName(0));
+    }
 }