// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. // // Dart test program for testing dart:ffi primitive data pointers. // // These callocs trigger an asan alarm, so these tests are in a separate file // which is excluded in asan mode. import 'dart:ffi'; import "package:ffi/ffi.dart"; import "package:expect/expect.dart"; void main() { testPointerAllocateTooLarge(); testPointerAllocateNegative(); } void testPointerAllocateTooLarge() { // Try to allocate something that doesn't fit in 64 bit address space. int maxInt = 9223372036854775807; // 2^63 - 1 Expect.throws(() => calloc(maxInt)); // Try to allocate almost the full 64 bit address space. int maxInt1_8 = 1152921504606846975; // 2^60 -1 Expect.throws(() => calloc(maxInt1_8)); } void testPointerAllocateNegative() { // Passing in -1 will be converted into an unsigned integer. So, it will try // to allocate SIZE_MAX - 1 + 1 bytes. This will fail as it is the max amount // of addressable memory on the system. Expect.throws(() => calloc(-1)); }