| Index: runtime/vm/dart_api_impl_test.cc
|
| diff --git a/runtime/vm/dart_api_impl_test.cc b/runtime/vm/dart_api_impl_test.cc
|
| index 78d12cf437ed1c9e9345e2a39378febfc0ce36ed..e7717f80a5d42e4e85e7eeb766d3667113be592c 100644
|
| --- a/runtime/vm/dart_api_impl_test.cc
|
| +++ b/runtime/vm/dart_api_impl_test.cc
|
| @@ -1871,7 +1871,8 @@ TEST_CASE(TypedDataDirectAccessVerified) {
|
|
|
| static void TestDirectAccess(Dart_Handle lib,
|
| Dart_Handle array,
|
| - Dart_TypedData_Type expected_type) {
|
| + Dart_TypedData_Type expected_type,
|
| + bool is_external) {
|
| Dart_Handle result;
|
|
|
| // Invoke the dart function that sets initial values.
|
| @@ -1894,6 +1895,15 @@ static void TestDirectAccess(Dart_Handle lib,
|
| EXPECT_EQ(i, dataP[i]);
|
| }
|
|
|
| + if (!is_external) {
|
| + // Now try allocating a string with outstanding Acquires and it should
|
| + // return an error.
|
| + result = NewString("We expect an error here");
|
| + EXPECT_ERROR(result,
|
| + "Internal Dart data pointers have been acquired, "
|
| + "please release them using Dart_TypedDataReleaseData.");
|
| + }
|
| +
|
| // Now modify the values in the directly accessible array and then check
|
| // it we see the changes back in dart.
|
| for (int i = 0; i < kLength; i++) {
|
| @@ -1942,7 +1952,7 @@ static void TestTypedDataDirectAccess1() {
|
| Dart_Handle list_access_test_obj;
|
| list_access_test_obj = Dart_Invoke(lib, NewString("main"), 0, NULL);
|
| EXPECT_VALID(list_access_test_obj);
|
| - TestDirectAccess(lib, list_access_test_obj, Dart_TypedData_kInt8);
|
| + TestDirectAccess(lib, list_access_test_obj, Dart_TypedData_kInt8, false);
|
|
|
| // Test with an external typed data object.
|
| uint8_t data[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
|
| @@ -1951,7 +1961,7 @@ static void TestTypedDataDirectAccess1() {
|
| ext_list_access_test_obj = Dart_NewExternalTypedData(Dart_TypedData_kUint8,
|
| data, data_length);
|
| EXPECT_VALID(ext_list_access_test_obj);
|
| - TestDirectAccess(lib, ext_list_access_test_obj, Dart_TypedData_kUint8);
|
| + TestDirectAccess(lib, ext_list_access_test_obj, Dart_TypedData_kUint8, true);
|
| }
|
|
|
|
|
| @@ -2002,7 +2012,7 @@ static void TestTypedDataViewDirectAccess() {
|
| Dart_Handle list_access_test_obj;
|
| list_access_test_obj = Dart_Invoke(lib, NewString("main"), 0, NULL);
|
| EXPECT_VALID(list_access_test_obj);
|
| - TestDirectAccess(lib, list_access_test_obj, Dart_TypedData_kInt8);
|
| + TestDirectAccess(lib, list_access_test_obj, Dart_TypedData_kInt8, false);
|
| }
|
|
|
|
|
| @@ -2053,7 +2063,7 @@ static void TestByteDataDirectAccess() {
|
| Dart_Handle list_access_test_obj;
|
| list_access_test_obj = Dart_Invoke(lib, NewString("main"), 0, NULL);
|
| EXPECT_VALID(list_access_test_obj);
|
| - TestDirectAccess(lib, list_access_test_obj, Dart_TypedData_kByteData);
|
| + TestDirectAccess(lib, list_access_test_obj, Dart_TypedData_kByteData, false);
|
| }
|
|
|
|
|
|
|