Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
uamqp/deps/umock-c/src/umockstring.c@0:f7f1f0d76dd6, 2018-08-23 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |