-#define model_print(fmt, ...) do { switch_alloc = 1; dprintf(model_out, fmt, ## __VA_ARGS__); switch_alloc = 0; } while (0)
+#define model_print(fmt, ...) do { \
+ switch_alloc = 1; \
+ char mprintbuf[256]; \
+ int printbuflen=snprintf_(mprintbuf, 256, fmt, ## __VA_ARGS__); \
+ int lenleft = printbuflen < 256 ?printbuflen:256; \
+ int totalwritten = 0;\
+ while(lenleft) { \
+ int byteswritten=write(model_out, &mprintbuf[totalwritten], lenleft);\
+ lenleft-=byteswritten; \
+ totalwritten+=byteswritten; \
+ } \
+ switch_alloc = 0; \
+ } while (0)