On Sat, 26 Sep 2026 14:32:49 +0200
"Jason A. Donenfeld" [off-list ref] 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;
Wouldn't it be better to add a barrier() or similar in there to
stop the compiler playing unwanted games>
David
(Technically that could even be one, but maybe that sort of golf loses
clarity. Your choice.)