On Sat, Sep 26, 2026 at 02:32:49PM +0200, Jason A. Donenfeld wrote:
On Sat, Sep 26, 2026 at 01:19:27PM +0100, Nathan Chancellor wrote:
quoted
On Sat, Sep 26, 2026 at 11:39:43AM +0200, Andreas Schwab wrote:
quoted
On Sep 25 2026, Nathan Chancellor wrote:
quoted
+#if __has_builtin(__builtin_memset_inline)
+#define memset_inline(dst, value, size) __builtin_memset_inline(dst, value, size)
+#elif IS_ENABLED(CONFIG_CC_HAS_OPT_INLINE_MEMSET)
+#define memset_inline(dst, value, size) __builtin_memset(dst, value, size)
+#else
+static inline void *memset_inline(void *dst, int value, size_t size)
+{
+ char *d = dst;
+
+ while (size--)
+ *d++ = value;
+
+ return d;
+}
+#endif
+
memset actually returns the original pointer, not the incremented one.
Nothing uses the return value of memset_inline here, but it is
confusing.
Whoops, good catch, I guess my fingers gave up on those last two
characters :) I will fix this for v3 once there has been some time for
further review.
Do we even need to return a value at all? Might as well just make the
function two lines:
+ for (char *d = dst; size--;)
+ *d++ = value;
Yeah, good point, no point in returning something that we don't need
plus this is basically what we had before, just with a different pointer
type. Thanks for the suggestion.
(Technically that could even be one, but maybe that sort of golf loses
clarity. Your choice.)
I'll keep it two lines just for the sake of clarity.
--
Cheers,
Nathan