Xin Zhang / azure-iot-c-sdk-f767zi

Dependents:   samplemqtt

Committer:
XinZhangMS
Date:
Thu Aug 23 06:52:14 2018 +0000
Revision:
0:f7f1f0d76dd6
azure-c-sdk for mbed os supporting NUCLEO_F767ZI

Who changed what in which revision?

UserRevisionLine numberNew contents of line
XinZhangMS 0:f7f1f0d76dd6 1 // Copyright (c) Microsoft. All rights reserved.
XinZhangMS 0:f7f1f0d76dd6 2 // Licensed under the MIT license. See LICENSE file in the project root for full license information.
XinZhangMS 0:f7f1f0d76dd6 3
XinZhangMS 0:f7f1f0d76dd6 4 #include <stddef.h>
XinZhangMS 0:f7f1f0d76dd6 5 #include <string.h>
XinZhangMS 0:f7f1f0d76dd6 6 #include "umockalloc.h"
XinZhangMS 0:f7f1f0d76dd6 7 #include "umockstring.h"
XinZhangMS 0:f7f1f0d76dd6 8 #include "umock_log.h"
XinZhangMS 0:f7f1f0d76dd6 9
XinZhangMS 0:f7f1f0d76dd6 10 char* umockstring_clone(const char* source)
XinZhangMS 0:f7f1f0d76dd6 11 {
XinZhangMS 0:f7f1f0d76dd6 12 char* result;
XinZhangMS 0:f7f1f0d76dd6 13
XinZhangMS 0:f7f1f0d76dd6 14 if (source == NULL)
XinZhangMS 0:f7f1f0d76dd6 15 {
XinZhangMS 0:f7f1f0d76dd6 16 /* Codes_UMOCK_STRING_01_005: [ If `umockstring_clone` is called with a NULL `source`, it shall return NULL. ]*/
XinZhangMS 0:f7f1f0d76dd6 17 UMOCK_LOG("umockstring_clone called with NULL source");
XinZhangMS 0:f7f1f0d76dd6 18 result = NULL;
XinZhangMS 0:f7f1f0d76dd6 19 }
XinZhangMS 0:f7f1f0d76dd6 20 else
XinZhangMS 0:f7f1f0d76dd6 21 {
XinZhangMS 0:f7f1f0d76dd6 22 size_t string_length = strlen(source);
XinZhangMS 0:f7f1f0d76dd6 23
XinZhangMS 0:f7f1f0d76dd6 24 /* Codes_UMOCK_STRING_01_001: [ `umockstring_clone` shall allocate memory for the cloned string (including the NULL terminator). ]*/
XinZhangMS 0:f7f1f0d76dd6 25 /* Codes_UMOCK_STRING_01_003: [ On success `umockstring_clone` shall return a pointer to the newly allocated memory containing the copy of the string. ]*/
XinZhangMS 0:f7f1f0d76dd6 26 result = (char*)umockalloc_malloc(string_length + 1);
XinZhangMS 0:f7f1f0d76dd6 27 if (result == NULL)
XinZhangMS 0:f7f1f0d76dd6 28 {
XinZhangMS 0:f7f1f0d76dd6 29 /* Codes_UMOCK_STRING_01_004: [ If allocating the memory fails, `umockstring_clone` shall return NULL. ]*/
XinZhangMS 0:f7f1f0d76dd6 30 UMOCK_LOG("Error allocating memory for string clone");
XinZhangMS 0:f7f1f0d76dd6 31 }
XinZhangMS 0:f7f1f0d76dd6 32 else
XinZhangMS 0:f7f1f0d76dd6 33 {
XinZhangMS 0:f7f1f0d76dd6 34 /* Codes_UMOCK_STRING_01_002: [ `umockstring_clone` shall copy the string to the newly allocated memory (including the NULL terminator). ]*/
XinZhangMS 0:f7f1f0d76dd6 35 (void)memcpy(result, source, string_length + 1);
XinZhangMS 0:f7f1f0d76dd6 36 }
XinZhangMS 0:f7f1f0d76dd6 37 }
XinZhangMS 0:f7f1f0d76dd6 38
XinZhangMS 0:f7f1f0d76dd6 39 return result;
XinZhangMS 0:f7f1f0d76dd6 40 }