From 597a363216ae1f121ecc7527da033091814973d8 Mon Sep 17 00:00:00 2001
From: "alexey.stratulat" <alexey.stratulat@demlabs.net>
Date: Tue, 8 Mar 2022 16:50:08 +0700
Subject: [PATCH] [*] Redesigned custom datum creation function and wrapper for
 it, now the function returns a string or NULL. And python-cellframe returns
 either a string or None.

---
 modules/service/datum/dap_chain_net_srv_datum.c   | 15 ++++-----------
 .../datum/include/dap_chain_net_srv_datum.h       |  2 +-
 2 files changed, 5 insertions(+), 12 deletions(-)

diff --git a/modules/service/datum/dap_chain_net_srv_datum.c b/modules/service/datum/dap_chain_net_srv_datum.c
index e9c46b56bd..1fa3580a98 100644
--- a/modules/service/datum/dap_chain_net_srv_datum.c
+++ b/modules/service/datum/dap_chain_net_srv_datum.c
@@ -75,24 +75,17 @@ uint8_t * dap_chain_net_srv_file_datum_data_read(char * a_path, size_t *a_data_s
     return l_datum_data;
 }
 
-int dap_chain_net_srv_datum_custom_add(dap_chain_t * a_chain, uint8_t *a_data, size_t a_data_size) {
+char* dap_chain_net_srv_datum_custom_add(dap_chain_t * a_chain, const uint8_t *a_data, size_t a_data_size) {
 
     dap_chain_datum_t * l_datum = dap_chain_datum_create( DAP_CHAIN_DATUM_CUSTOM, a_data, a_data_size);
     if( l_datum == NULL){
-        DAP_DELETE(a_data);
-        return -7;
+        log_it(L_ERROR, "Failed to create custom datum.");
+        return NULL;
     }
 
     // Finaly add datum to mempool
     char *l_hash_str = dap_chain_mempool_datum_add(l_datum, a_chain);
-    DAP_DELETE(a_data);
-    if (l_hash_str) {
-        DAP_DELETE(l_hash_str);
-        return 0;
-    } else {
-        DAP_DELETE(l_datum);
-        return -8;
-    }
+    return l_hash_str;
 }
 
 static int s_srv_datum_cli(int argc, char ** argv, char **a_str_reply) {
diff --git a/modules/service/datum/include/dap_chain_net_srv_datum.h b/modules/service/datum/include/dap_chain_net_srv_datum.h
index 18663df7e0..475c8e8ede 100644
--- a/modules/service/datum/include/dap_chain_net_srv_datum.h
+++ b/modules/service/datum/include/dap_chain_net_srv_datum.h
@@ -30,4 +30,4 @@ int dap_chain_net_srv_datum_init();
 void dap_chain_net_srv_datum_deinit();
 
 uint8_t * dap_chain_net_srv_file_datum_data_read(char * a_path, size_t *a_data_size);
-int dap_chain_net_srv_datum_custom_add(dap_chain_t * a_chain, uint8_t *a_data, size_t a_data_size);
+char* dap_chain_net_srv_datum_custom_add(dap_chain_t * a_chain, const uint8_t *a_data, size_t a_data_size);
-- 
GitLab