mirror of
https://github.com/bdnugget/nbnet.git
synced 2026-11-07 05:27:27 +00:00
* Fix rpc build with other examples
CPP_COMPILE is an option, a cache variable, thus regular unset() is not
working for it since it tries to unset the scope variable.
This causing cmake to skip compilation of rpc.
Unset CPP_COMPILE from CACHE to make it work as intended.
* Fix compiler flags with build targets
Currently tests, soak and examples are build without extra flags,
because add_compile_options is specified after defining build targets.
From add_compile_options() docs:
Adds options to the compiler command line for targets in the current
directory and below that are added *after* this command is invoked.
* Pass debug callbacks as struct
Fixes:
warning: ISO C forbids conversion of function pointer to object pointer
type
* Move global variables under NBNET_IMPL
Nb net could be included multiple times, to prevent creation of global
variables in each file move them under NBNET_IMPL.
Also use designated initializer to initiate a driver structure to
remove warnings about partial initialization. Designated initializer
would initialize other members to zero.
* Resolve unused variables warnings.
Cast unused function arguments to (void) to suspend warnings.
* Resolve signed vs unsigned warnings
Remove unnecessary lt 0 checks and sync types to remove signed vs
unsigned warnings.
* Resolve string related warnings
Fixes:
nbnet/tests/string_tests.c:18:9: error: ‘strncpy’
output truncated before terminating nul copying 5 bytes from a string of
the same length
[-Werror=stringop-truncation]
18 | strncpy(res + pos, b, len_b);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
nbnet/tests/string_tests.c:24:9: error: ‘strncpy’
specified bound depends on the length of the source argument
[-Werror=stringop-truncation]
* Resolve function defined but not used warnings
Mark GameServer_GetClientCount() as inline.
* Attempt to fix warning in ASSERT_VALUE_IN_RANGE
In case when value in unsigned type and min is 0, this commit just
obfuscates types, maybe there's better solution.
Fixes:
warning: comparison of unsigned expression in ‘>= 0’ is always true
[-Wtype-limits]
* Ensure that read len is less than word size
In release mode(-DCMAKE_BUILD_TYPE=Release) tests returning following
error:
nbnet/tests/../nbnet.h:2272:9: error: ‘memcpy’ forming offset [4, 7] is
out of the bound s [0, 4] of object ‘word’ with type ‘Word’ {aka
‘unsigned int’} [-Werror=array-bounds=]
2272 | memcpy(bytes, &word, length); |
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
Add check to verify that length is less than Word size.
* add -Wno-unknown-pragmas flag
* fix examples compilation on windows
* fix examples compilation on windows
* fix examples compilation on windows
* fix unit tests compilation on windows
* fix soak test compilation on windows
* fix unit tests compilation on windows
* fix unit tests compilation on windows
---------
Co-authored-by: BIAGINI Nathan <nath.biagini@gmail.com>
63 lines
1.4 KiB
C
63 lines
1.4 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
#include "CuTest.h"
|
|
|
|
static void StringReplaceAll(char *res, const char *str, const char *a, const char *b)
|
|
{
|
|
char *substr = strstr(str, a);
|
|
size_t len_a = strlen(a);
|
|
size_t len_b = strlen(b);
|
|
|
|
if (substr)
|
|
{
|
|
int pos = substr - str;
|
|
|
|
memcpy(res, str, pos);
|
|
memcpy(res + pos, b, len_b);
|
|
|
|
StringReplaceAll(res + pos + len_b, str + pos + len_a, a, b);
|
|
}
|
|
else
|
|
{
|
|
memcpy(res, str, strlen(str) + 1);
|
|
}
|
|
}
|
|
|
|
void Test_StringReplaceAll(CuTest *tc)
|
|
{
|
|
const char *str = "foo bar plop foo plap test foo";
|
|
const char *str2 = "foo bar\nplop\n\nplap";
|
|
const char *str3 = "foo bar";
|
|
char res[128] = {0};
|
|
char res2[128] = {0};
|
|
char res3[16] = {0};
|
|
|
|
StringReplaceAll(res, str, "foo", "hello");
|
|
CuAssertStrEquals(tc, "hello bar plop hello plap test hello", res);
|
|
StringReplaceAll(res2, str2, "\n", "\\n");
|
|
CuAssertStrEquals(tc, "foo bar\\nplop\\n\\nplap", res2);
|
|
StringReplaceAll(res3, str3, "test", "aaaaa");
|
|
CuAssertStrEquals(tc, "foo bar", res3);
|
|
}
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
CuString *output = CuStringNew();
|
|
CuSuite* suite = CuSuiteNew();
|
|
|
|
(void) argc;
|
|
(void) argv;
|
|
|
|
SUITE_ADD_TEST(suite, Test_StringReplaceAll);
|
|
|
|
CuSuiteRun(suite);
|
|
CuSuiteSummary(suite, output);
|
|
CuSuiteDetails(suite, output);
|
|
|
|
printf("%s\n", output->buffer);
|
|
|
|
return suite->failCount;
|
|
}
|