From ab578ff5dbdc19b9647e3535e7d41306e46fab5d Mon Sep 17 00:00:00 2001 From: Fu Juntang <StrongTiger_001@163.com> Date: 星期一, 30 八月 2021 19:32:58 +0800 Subject: [PATCH] Fix the return stat check. --- src/bh_api.cpp | 30 ++++++++++++++++++++---------- 1 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/bh_api.cpp b/src/bh_api.cpp index 9875cfa..76e78d7 100644 --- a/src/bh_api.cpp +++ b/src/bh_api.cpp @@ -1408,16 +1408,6 @@ memset(topics_buf, 0x00, sizeof(topics_buf)); memcpy(topics_buf, buf, size); rr.data = topics_buf; - -#if defined(PRO_DE_SERIALIZE) - ::bhome_msg::MsgRequestTopicReply mrt; - mrt.mutable_errmsg()->set_errcode(::bhome_msg::ErrorCode(rv)); - mrt.mutable_errmsg()->set_errstring(errString); - mrt.set_data(rr.data.data()); - *reply_len = mrt.ByteSizeLong(); - *reply = malloc(*reply_len); - mrt.SerializePartialToArray(*reply, *reply_len); -#endif } pthread_mutex_unlock(&mutex); @@ -1429,6 +1419,26 @@ strncpy(errString, bus_strerror(rv), sizeof(errString)); } +#if defined(PRO_DE_SERIALIZE) + ::bhome_msg::MsgRequestTopicReply mrt; + mrt.mutable_errmsg()->set_errcode(::bhome_msg::ErrorCode(rv)); + mrt.mutable_errmsg()->set_errstring(errString); + mrt.set_data(rr.data.data()); + *reply_len = mrt.ByteSizeLong(); + *reply = malloc(*reply_len); + mrt.SerializePartialToArray(*reply, *reply_len); +#else + if (rv > 0) { + min = strlen(errString) + 1; + buf = malloc(min); + memcpy(buf, errString, strlen(errString)); + *((char *)buf + min - 1) = '\0'; + + *reply = buf; + *reply_len = min; + } +#endif + if (rv == 0) return true; -- Gitblit v1.8.0