[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[lvm-devel] Re: LVM2 ./WHATS_NEW_DM libdm/libdm-deptree.c

Dave Wysochanski napsal(a):
+/* simplify string emiting code */
+#define EMIT_PARAMS(p, str...)\
+	do {\
+		const size_t bufsize = paramsize - (size_t)p;\
+		int w;\
+		\
+		if ((w = snprintf(params + p, bufsize, str)) < 0\
+		    || ((size_t)w >= bufsize)) {\
+			stack; /* Out of space */\
+			return -1;\
+		}\
+		p += w;\
+	} while (0)

Do we have to do a macro here?  Macros like this are harder to debug...

I think it's actually minimizing the chance you will add a buggy code by some cut&paste operation when you add new string emitting line.

Also it makes the code more readable.

Do you think there is some potential debug problem in this code, that makes
worth to keep the original emitting style?

(i.e. replicator emits string 11 times - without this macro it makes the code even less readable, and also using inline function and 'stack' macro is not going to work together, so it's hard to use gdb-friendly inline here :( )


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]