File 0103-erts-Remove-unnecessary-NIF-argc-tests.patch of Package erlang

From 660d41940fc8d0dbdc846939c5975e553a09d95b Mon Sep 17 00:00:00 2001
From: Sverker Eriksson <sverker@erlang.org>
Date: Tue, 25 Sep 2018 19:57:36 +0200
Subject: [PATCH] erts: Remove unnecessary NIF argc tests

It's impossible to call NIF with wrong argc from Erlang
and thus pointless to throw badarg.
---
 erts/emulator/nifs/common/prim_file_nif.c | 116 +++++++++++++-----------------
 1 file changed, 48 insertions(+), 68 deletions(-)

diff --git a/erts/emulator/nifs/common/prim_file_nif.c b/erts/emulator/nifs/common/prim_file_nif.c
index a05d50b333..9b98ac3f9a 100644
--- a/erts/emulator/nifs/common/prim_file_nif.c
+++ b/erts/emulator/nifs/common/prim_file_nif.c
@@ -442,7 +442,8 @@ static ERL_NIF_TERM open_nif(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]
     ERL_NIF_TERM result;
     efile_path_t path;
 
-    if(argc != 2 || !enif_is_list(env, argv[1])) {
+    ASSERT(argc == 2);
+    if(!enif_is_list(env, argv[1])) {
         return enif_make_badarg(env);
     }
 
@@ -495,7 +494,8 @@ static ERL_NIF_TERM read_nif_impl(efile_data_t *d, ErlNifEnv *env, int argc, con
     SysIOVec read_vec[1];
     ErlNifBinary result;
 
-    if(argc != 1 || !enif_is_number(env, argv[0])) {
+    ASSERT(argc == 1);
+    if(!enif_is_number(env, argv[0])) {
         return enif_make_badarg(env);
     }
 
@@ -532,7 +532,8 @@ static ERL_NIF_TERM write_nif_impl(efile_data_t *d, ErlNifEnv *env, int argc, co
     Sint64 bytes_written;
     ERL_NIF_TERM tail;
 
-    if(argc != 1 || !enif_inspect_iovec(env, 64, argv[0], &tail, &input)) {
+    ASSERT(argc == 1);
+    if(!enif_inspect_iovec(env, 64, argv[0], &tail, &input)) {
         return enif_make_badarg(env);
     }
 
@@ -555,8 +556,8 @@ static ERL_NIF_TERM pread_nif_impl(efile_data_t *d, ErlNifEnv *env, int argc, co
     SysIOVec read_vec[1];
     ErlNifBinary result;
 
-    if(argc != 2 || !enif_is_number(env, argv[0])
-                 || !enif_is_number(env, argv[1])) {
+    ASSERT(argc == 2);
+    if(!enif_is_number(env, argv[0]) || !enif_is_number(env, argv[1])) {
         return enif_make_badarg(env);
     }
 
@@ -594,8 +595,9 @@ static ERL_NIF_TERM pwrite_nif_impl(efile_data_t *d, ErlNifEnv *env, int argc, c
     Sint64 bytes_written, offset;
     ERL_NIF_TERM tail;
 
-    if(argc != 2 || !enif_is_number(env, argv[0])
-                 || !enif_inspect_iovec(env, 64, argv[1], &tail, &input)) {
+    ASSERT(argc == 2);
+    if(!enif_is_number(env, argv[0])
+       || !enif_inspect_iovec(env, 64, argv[1], &tail, &input)) {
         return enif_make_badarg(env);
     }
 
@@ -622,7 +624,8 @@ static ERL_NIF_TERM seek_nif_impl(efile_data_t *d, ErlNifEnv *env, int argc, con
     Sint64 new_position, offset;
     enum efile_seek_t seek;
 
-    if(argc != 2 || !enif_get_int64(env, argv[1], &offset)) {
+    ASSERT(argc == 2);
+    if(!enif_get_int64(env, argv[1], &offset)) {
         return enif_make_badarg(env);
     }
 
@@ -646,7 +649,8 @@ static ERL_NIF_TERM seek_nif_impl(efile_data_t *d, ErlNifEnv *env, int argc, con
 static ERL_NIF_TERM sync_nif_impl(efile_data_t *d, ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]) {
     int data_only;
 
-    if(argc != 1 || !enif_get_int(env, argv[0], &data_only)) {
+    ASSERT(argc == 1);
+    if(!enif_get_int(env, argv[0], &data_only)) {
         return enif_make_badarg(env);
     }
 
@@ -658,9 +662,7 @@ static ERL_NIF_TERM sync_nif_impl(efile_data_t *d, ErlNifEnv *env, int argc, con
 }
 
 static ERL_NIF_TERM truncate_nif_impl(efile_data_t *d, ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]) {
-    if(argc != 0) {
-        return enif_make_badarg(env);
-    }
+    ASSERT(argc == 0);
 
     if(!efile_truncate(d)) {
         return posix_error_to_tuple(env, d->posix_errno);
@@ -672,8 +674,8 @@ static ERL_NIF_TERM truncate_nif_impl(efile_data_t *d, ErlNifEnv *env, int argc,
 static ERL_NIF_TERM allocate_nif_impl(efile_data_t *d, ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]) {
     Sint64 offset, length;
 
-    if(argc != 2 || !enif_is_number(env, argv[0])
-                 || !enif_is_number(env, argv[1])) {
+    ASSERT(argc == 2);
+    if(!enif_is_number(env, argv[0]) || !enif_is_number(env, argv[1])) {
         return enif_make_badarg(env);
     }
 
@@ -694,8 +696,8 @@ static ERL_NIF_TERM advise_nif_impl(efile_data_t *d, ErlNifEnv *env, int argc, c
     enum efile_advise_t advise;
     Sint64 offset, length;
 
-    if(argc != 3 || !enif_is_number(env, argv[0])
-                 || !enif_is_number(env, argv[1])) {
+    ASSERT(argc == 3);
+    if(!enif_is_number(env, argv[0]) || !enif_is_number(env, argv[1])) {
         return enif_make_badarg(env);
     }
 
@@ -758,8 +760,8 @@ static ERL_NIF_TERM ipread_s32bu_p32bu_nif_impl(efile_data_t *d, ErlNifEnv *env,
 
     ErlNifBinary payload;
 
-    if(argc != 2 || !enif_is_number(env, argv[0])
-                 || !enif_is_number(env, argv[1])) {
+    ASSERT(argc == 2);
+    if(!enif_is_number(env, argv[0]) || !enif_is_number(env, argv[1])) {
         return enif_make_badarg(env);
     }
 
@@ -825,9 +827,7 @@ static ERL_NIF_TERM ipread_s32bu_p32bu_nif_impl(efile_data_t *d, ErlNifEnv *env,
 }
 
 static ERL_NIF_TERM get_handle_nif_impl(efile_data_t *d, ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]) {
-    if(argc != 0) {
-        return enif_make_badarg(env);
-    }
+    ASSERT(argc == 0);
 
     return efile_get_handle(env, d);
 }
@@ -839,7 +839,8 @@ static ERL_NIF_TERM read_info_nif(ErlNifEnv *env, int argc, const ERL_NIF_TERM a
     efile_path_t path;
     int follow_links;
 
-    if(argc != 2 || !enif_get_int(env, argv[1], &follow_links)) {
+    ASSERT(argc == 2);
+    if(!enif_get_int(env, argv[1], &follow_links)) {
         return enif_make_badarg(env);
     }
 
@@ -874,7 +875,8 @@ static ERL_NIF_TERM set_permissions_nif(ErlNifEnv *env, int argc, const ERL_NIF_
     efile_path_t path;
     unsigned int permissions;
 
-    if(argc != 2 || !enif_get_uint(env, argv[1], &permissions)) {
+    ASSERT(argc == 2);
+    if(!enif_get_uint(env, argv[1], &permissions)) {
         return enif_make_badarg(env);
     }
 
@@ -893,8 +895,8 @@ static ERL_NIF_TERM set_owner_nif(ErlNifEnv *env, int argc, const ERL_NIF_TERM a
     efile_path_t path;
     int uid, gid;
 
-    if(argc != 3 || !enif_get_int(env, argv[1], &uid)
-                 || !enif_get_int(env, argv[2], &gid)) {
+    ASSERT(argc == 3);
+    if(!enif_get_int(env, argv[1], &uid) || !enif_get_int(env, argv[2], &gid)) {
         return enif_make_badarg(env);
     }
 
@@ -913,9 +915,10 @@ static ERL_NIF_TERM set_time_nif(ErlNifEnv *env, int argc, const ERL_NIF_TERM ar
     Sint64 accessed, modified, created;
     efile_path_t path;
 
-    if(argc != 4 || !enif_get_int64(env, argv[1], &accessed)
-                 || !enif_get_int64(env, argv[2], &modified)
-                 || !enif_get_int64(env, argv[3], &created)) {
+    ASSERT(argc == 4);
+    if(!enif_get_int64(env, argv[1], &accessed)
+       || !enif_get_int64(env, argv[2], &modified)
+       || !enif_get_int64(env, argv[3], &created)) {
         return enif_make_badarg(env);
     }
 
@@ -934,9 +937,7 @@ static ERL_NIF_TERM read_link_nif(ErlNifEnv *env, int argc, const ERL_NIF_TERM a
     efile_path_t path;
     ERL_NIF_TERM result;
 
-    if(argc != 1) {
-        return enif_make_badarg(env);
-    }
+    ASSERT(argc == 1);
 
     if((posix_errno = efile_marshal_path(env, argv[0], &path))) {
         return posix_error_to_tuple(env, posix_errno);
@@ -953,9 +954,7 @@ static ERL_NIF_TERM list_dir_nif(ErlNifEnv *env, int argc, const ERL_NIF_TERM ar
     efile_path_t path;
     ERL_NIF_TERM result;
 
-    if(argc != 1) {
-        return enif_make_badarg(env);
-    }
+    ASSERT(argc == 1);
 
     if((posix_errno = efile_marshal_path(env, argv[0], &path))) {
         return posix_error_to_tuple(env, posix_errno);
@@ -971,9 +970,7 @@ static ERL_NIF_TERM rename_nif(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv
 
     efile_path_t existing_path, new_path;
 
-    if(argc != 2) {
-        return enif_make_badarg(env);
-    }
+    ASSERT(argc == 2);
 
     if((posix_errno = efile_marshal_path(env, argv[0], &existing_path))) {
         return posix_error_to_tuple(env, posix_errno);
@@ -991,9 +988,7 @@ static ERL_NIF_TERM make_hard_link_nif(ErlNifEnv *env, int argc, const ERL_NIF_T
 
     efile_path_t existing_path, new_path;
 
-    if(argc != 2) {
-        return enif_make_badarg(env);
-    }
+    ASSERT(argc == 2);
 
     if((posix_errno = efile_marshal_path(env, argv[0], &existing_path))) {
         return posix_error_to_tuple(env, posix_errno);
@@ -1011,9 +1006,7 @@ static ERL_NIF_TERM make_soft_link_nif(ErlNifEnv *env, int argc, const ERL_NIF_T
 
     efile_path_t existing_path, new_path;
 
-    if(argc != 2) {
-        return enif_make_badarg(env);
-    }
+    ASSERT(argc == 2);
 
     if((posix_errno = efile_marshal_path(env, argv[0], &existing_path))) {
         return posix_error_to_tuple(env, posix_errno);
@@ -1031,9 +1024,7 @@ static ERL_NIF_TERM make_dir_nif(ErlNifEnv *env, int argc, const ERL_NIF_TERM ar
 
     efile_path_t path;
 
-    if(argc != 1) {
-        return enif_make_badarg(env);
-    }
+    ASSERT(argc == 1);
 
     if((posix_errno = efile_marshal_path(env, argv[0], &path))) {
         return posix_error_to_tuple(env, posix_errno);
@@ -1049,9 +1040,7 @@ static ERL_NIF_TERM del_file_nif(ErlNifEnv *env, int argc, const ERL_NIF_TERM ar
 
     efile_path_t path;
 
-    if(argc != 1) {
-        return enif_make_badarg(env);
-    }
+    ASSERT(argc == 1);
 
     if((posix_errno = efile_marshal_path(env, argv[0], &path))) {
         return posix_error_to_tuple(env, posix_errno);
@@ -1067,9 +1056,7 @@ static ERL_NIF_TERM del_dir_nif(ErlNifEnv *env, int argc, const ERL_NIF_TERM arg
 
     efile_path_t path;
 
-    if(argc != 1) {
-        return enif_make_badarg(env);
-    }
+    ASSERT(argc == 1);
 
     if((posix_errno = efile_marshal_path(env, argv[0], &path))) {
         return posix_error_to_tuple(env, posix_errno);
@@ -1086,7 +1073,8 @@ static ERL_NIF_TERM get_device_cwd_nif(ErlNifEnv *env, int argc, const ERL_NIF_T
     ERL_NIF_TERM result;
     int device_index;
 
-    if(argc != 1 || !enif_get_int(env, argv[0], &device_index)) {
+    ASSERT(argc == 1);
+    if(!enif_get_int(env, argv[0], &device_index)) {
         return enif_make_badarg(env);
     }
 
@@ -1101,9 +1089,7 @@ static ERL_NIF_TERM get_cwd_nif(ErlNifEnv *env, int argc, const ERL_NIF_TERM arg
     posix_errno_t posix_errno;
     ERL_NIF_TERM result;
 
-    if(argc != 0) {
-        return enif_make_badarg(env);
-    }
+    ASSERT(argc == 0);
 
     if((posix_errno = efile_get_cwd(env, &result))) {
         return posix_error_to_tuple(env, posix_errno);
@@ -1117,9 +1103,7 @@ static ERL_NIF_TERM set_cwd_nif(ErlNifEnv *env, int argc, const ERL_NIF_TERM arg
 
     efile_path_t path;
 
-    if(argc != 1) {
-        return enif_make_badarg(env);
-    }
+    ASSERT(argc == 1);
 
     if((posix_errno = efile_marshal_path(env, argv[0], &path))) {
         return posix_error_to_tuple(env, posix_errno);
@@ -1195,9 +1179,7 @@ static ERL_NIF_TERM read_file_nif(ErlNifEnv *env, int argc, const ERL_NIF_TERM a
 
     ErlNifBinary result;
 
-    if(argc != 1) {
-        return enif_make_badarg(env);
-    }
+    ASSERT(argc == 1);
 
     if((posix_errno = efile_marshal_path(env, argv[0], &path))) {
         return posix_error_to_tuple(env, posix_errno);
@@ -1223,9 +1205,7 @@ static ERL_NIF_TERM altname_nif(ErlNifEnv *env, int argc, const ERL_NIF_TERM arg
     efile_path_t path;
     ERL_NIF_TERM result;
 
-    if(argc != 1) {
-        return enif_make_badarg(env);
-    }
+    ASSERT(argc == 1);
 
     if((posix_errno = efile_marshal_path(env, argv[0], &path))) {
         return posix_error_to_tuple(env, posix_errno);
-- 
2.16.4

openSUSE Build Service is sponsored by