diff --git a/include/android-ashmem.h b/include/android-ashmem.h index 174c655f..ce1558f8 100644 --- a/include/android-ashmem.h +++ b/include/android-ashmem.h @@ -30,8 +30,9 @@ int shmctl(int __shmid, int __cmd, struct shmid_ds *__buf) { int ret = 0; if (__cmd == IPC_RMID) { - unsigned int length = ioctl(__shmid, ASHMEM_GET_SIZE, NULL); - struct ashmem_pin pin = {0, length}; + int length = ioctl(__shmid, ASHMEM_GET_SIZE, NULL); + unsigned int safe_length = length >= 0 ? length : 0; + struct ashmem_pin pin = {0, safe_length}; ret = ioctl(__shmid, ASHMEM_UNPIN, &pin); close(__shmid);