diff --git a/cmake/OS_Detection.cmake b/cmake/OS_Detection.cmake
index 161a5b8fa690764c43d26f5e2f027b1c8119834c..610ea72b0a1f2d604bbf322a25a803b2e3001d05 100644
--- a/cmake/OS_Detection.cmake
+++ b/cmake/OS_Detection.cmake
@@ -45,6 +45,7 @@ message(STATUS "[*] Building for a ${ARCH_WIDTH}-bit system")
 if(UNIX)
     add_definitions ("-DDAP_OS_UNIX")
     if (APPLE)
+        
         EXECUTE_PROCESS( COMMAND whoami COMMAND tr -d '\n' OUTPUT_VARIABLE L_USER)
         EXECUTE_PROCESS( COMMAND echo -n /Users/${L_USER} OUTPUT_VARIABLE L_USERDIR_PATH)
         set (USERDIR_PATH "${L_USERDIR_PATH}")
@@ -61,10 +62,12 @@ if(UNIX)
 		OUTPUT_STRIP_TRAILING_WHITESPACE
 	    )
             add_definitions("-DDAP_OS_MAC -DDAP_OS_MAC_ARCH=${MACOS_ARCH}")
-        endif()
-        if (${_CMAKE_OSX_SYSROOT_PATH} MATCHES "iOS")
+        elseif (${_CMAKE_OSX_SYSROOT_PATH} MATCHES "iOS")
             set(IOS ON)
             add_definitions("-DDAP_OS_IOS")
+        else()
+            set(MACOS ON)
+            add_definitions("-DDAP_OS_MAC -DDAP_OS_MAC_ARCH=${MACOS_ARCH}")
         endif()
     endif()
     
diff --git a/dap-sdk/crypto/src/dap_enc_ringct20.c b/dap-sdk/crypto/src/dap_enc_ringct20.c
index 047b7c967960569ed9287a077fb3df07d6dceea0..a0815efcd34d460975fa08c269f8739aace1ac6e 100644
--- a/dap-sdk/crypto/src/dap_enc_ringct20.c
+++ b/dap-sdk/crypto/src/dap_enc_ringct20.c
@@ -347,8 +347,7 @@ int ringct20_crypto_sign_open_with_pbkList(const unsigned char * msg, const unsi
     if(sig->sig_len < sizeof(DAP_RINGCT20_SIGN_SECURITY) + sizeof(wLenSig))
         return -1;
     DAP_RINGCT20_SIGN_SECURITY sec_kind = *(DAP_RINGCT20_SIGN_SECURITY*)sig->sig_data;
-    wLenSig = *(typeof (&wLenSig))(sig->sig_data + sizeof(DAP_RINGCT20_SIGN_SECURITY));
-
+    wLenSig = *(int *)(sig->sig_data + sizeof(DAP_RINGCT20_SIGN_SECURITY));
     if(wpbkList != 0 && wLenSig != wpbkList)
     {
         return -1;
diff --git a/modules/chain/dap_chain_ledger.c b/modules/chain/dap_chain_ledger.c
index 3db15516cfd0618fd36ff0cb48b729535fe12ed8..94208cc05fca2612e4b2fe4151729b3f5bf2e702 100644
--- a/modules/chain/dap_chain_ledger.c
+++ b/modules/chain/dap_chain_ledger.c
@@ -493,7 +493,7 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite
             //Allowed tx receiver addres list add, remove or clear
             case DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_RECEIVER_ALLOWED_ADD:{
                 if( l_tsd->size == sizeof (dap_chain_addr_t) ){
-                    dap_chain_addr_t * l_addrs = a_token_item->tx_recv_allow? DAP_NEW_Z_SIZE( typeof (*a_token_item->tx_recv_allow),
+                    dap_chain_addr_t * l_addrs = a_token_item->tx_recv_allow? DAP_NEW_Z_SIZE( dap_chain_addr_t,
                                                                                               sizeof(*a_token_item->tx_recv_allow) )
                                 : DAP_REALLOC(a_token_item->tx_recv_allow,(a_token_item->tx_recv_allow_size+1)*sizeof (*a_token_item->tx_recv_allow) );
 
@@ -585,7 +585,7 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite
             //Blocked tx receiver addres list add, remove or clear
             case DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_RECEIVER_BLOCKED_ADD:{
                 if( l_tsd->size == sizeof (dap_chain_addr_t) ){
-                    dap_chain_addr_t * l_addrs = a_token_item->tx_recv_block? DAP_NEW_Z_SIZE( typeof (*a_token_item->tx_recv_block),
+                    dap_chain_addr_t * l_addrs = a_token_item->tx_recv_block? DAP_NEW_Z_SIZE( dap_chain_addr_t,
                                                                                               sizeof(*a_token_item->tx_recv_block) )
                                 : DAP_REALLOC(a_token_item->tx_recv_block,(a_token_item->tx_recv_block_size+1)*sizeof (*a_token_item->tx_recv_block) );
                     // Check if its correct
@@ -674,7 +674,7 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite
             //Allowed tx sender addres list add, remove or clear
             case DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_SENDER_ALLOWED_ADD:{
                 if( l_tsd->size == sizeof (dap_chain_addr_t) ){
-                    dap_chain_addr_t * l_addrs = a_token_item->tx_send_allow? DAP_NEW_Z_SIZE( typeof (*a_token_item->tx_send_allow),
+                    dap_chain_addr_t * l_addrs = a_token_item->tx_send_allow ? DAP_NEW_Z_SIZE( dap_chain_addr_t,
                                                                                               sizeof(*a_token_item->tx_send_allow) )
                                 : DAP_REALLOC(a_token_item->tx_send_allow,(a_token_item->tx_send_allow_size+1)*sizeof (*a_token_item->tx_send_allow) );
                     // Check if its correct
@@ -761,7 +761,7 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite
             //Blocked tx sender addres list add, remove or clear
             case DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_SENDER_BLOCKED_ADD:{
                 if( l_tsd->size == sizeof (dap_chain_addr_t) ){
-                    dap_chain_addr_t * l_addrs = a_token_item->tx_send_block? DAP_NEW_Z_SIZE( typeof (*a_token_item->tx_send_block),
+                    dap_chain_addr_t * l_addrs = a_token_item->tx_send_block ? DAP_NEW_Z_SIZE( dap_chain_addr_t,
                                                                                               sizeof(*a_token_item->tx_send_block) )
                                 : DAP_REALLOC(a_token_item->tx_send_block,(a_token_item->tx_send_block_size+1)*sizeof (*a_token_item->tx_send_block) );
                     // Check if its correct