Commit Diff


commit - 6c99870701d4a71d429a26f357859416c875b2fb
commit + 607880ce788bbfb8585271af117a52e9359324dd
blob - 9329bc2f8b8bd82fc29a0e018cbf0bb5c572f9f1
blob + 10baf0f33c50a458a63118ebe16a0a076478051b
--- src/cmd/devdraw/osx-srv.c
+++ src/cmd/devdraw/osx-srv.c
@@ -289,6 +289,7 @@ runmsg(Wsysmsg *m)
 /*
  * Reply to m.
  */
+QLock replylock;
 void
 replymsg(Wsysmsg *m)
 {
@@ -303,6 +304,8 @@ replymsg(Wsysmsg *m)
 	if(trace) fprint(2, "-> %W\n", m);
 	/* copy to output buffer */
 	n = sizeW2M(m);
+
+	qlock(&replylock);
 	if(n > nmbuf){
 		free(mbuf);
 		mbuf = malloc(n);
@@ -313,6 +316,7 @@ replymsg(Wsysmsg *m)
 	convW2M(m, mbuf, n);
 	if(write(4, mbuf, n) != n)
 		sysfatal("write: %r");
+	qunlock(&replylock);
 }
 
 /*