aboutsummaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2025-10-07 20:03:32 -0700
committerGarrett D'Amore <garrett@damore.org>2025-10-07 20:03:32 -0700
commit3971d119c129bf5685f9fd14d0f1f785581c3565 (patch)
tree12b08c053d07fab5af699229ef52e311b8182d56 /src/core
parent07191755f3a38cbac48d15523095136f69d8f772 (diff)
downloadnng-3971d119c129bf5685f9fd14d0f1f785581c3565.tar.gz
nng-3971d119c129bf5685f9fd14d0f1f785581c3565.tar.bz2
nng-3971d119c129bf5685f9fd14d0f1f785581c3565.zip
options: string options are passed by reference
This avoids needless allocations, and we offer for pipes (which need this because they might be ephemeral) the get_strdup, get_strcpy, and get_strlen forms. (Those do the copying or allocations while holding the pipe reference.)
Diffstat (limited to 'src/core')
-rw-r--r--src/core/options.c12
-rw-r--r--src/core/stream.c8
2 files changed, 9 insertions, 11 deletions
diff --git a/src/core/options.c b/src/core/options.c
index 23e63d1c..f3843c0d 100644
--- a/src/core/options.c
+++ b/src/core/options.c
@@ -1,5 +1,5 @@
//
-// Copyright 2024 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2025 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
// Copyright 2018 Devolutions <info@devolutions.net>
//
@@ -9,9 +9,9 @@
// found online at https://opensource.org/licenses/MIT.
//
-#include "core/defs.h"
-#include "core/nng_impl.h"
+#include "defs.h"
#include "nng/nng.h"
+#include "nng_impl.h"
#include <stdio.h>
#include <string.h>
@@ -174,16 +174,12 @@ nni_copyout_sockaddr(
nng_err
nni_copyout_str(const char *str, void *dst, size_t *szp, nni_type t)
{
- char *s;
NNI_ARG_UNUSED(szp);
if (t != NNI_TYPE_STRING) {
return (NNG_EBADTYPE);
}
- if ((s = nni_strdup(str)) == NULL) {
- return (NNG_ENOMEM);
- }
- *(char **) dst = s;
+ *(const char **) dst = str;
return (NNG_OK);
}
diff --git a/src/core/stream.c b/src/core/stream.c
index 61a8a3ba..572f28d1 100644
--- a/src/core/stream.c
+++ b/src/core/stream.c
@@ -368,7 +368,7 @@ nng_stream_get_size(nng_stream *s, const char *n, size_t *v)
}
nng_err
-nng_stream_get_string(nng_stream *s, const char *n, char **v)
+nng_stream_get_string(nng_stream *s, const char *n, const char **v)
{
return (nni_stream_get(s, n, v, NULL, NNI_TYPE_STRING));
}
@@ -413,7 +413,8 @@ nng_stream_dialer_get_size(nng_stream_dialer *d, const char *n, size_t *v)
}
nng_err
-nng_stream_dialer_get_string(nng_stream_dialer *d, const char *n, char **v)
+nng_stream_dialer_get_string(
+ nng_stream_dialer *d, const char *n, const char **v)
{
return (nni_stream_dialer_get(d, n, v, NULL, NNI_TYPE_STRING));
}
@@ -456,7 +457,8 @@ nng_stream_listener_get_size(nng_stream_listener *l, const char *n, size_t *v)
}
nng_err
-nng_stream_listener_get_string(nng_stream_listener *l, const char *n, char **v)
+nng_stream_listener_get_string(
+ nng_stream_listener *l, const char *n, const char **v)
{
return (nni_stream_listener_get(l, n, v, NULL, NNI_TYPE_STRING));
}