diff --git a/mongoose.c b/mongoose.c
index 1c404f21dcd81b2b12742b73c6f9cc3967039f20..09a3dc9b4f9c38ea449c6f57ca76ce76e545a60a 100644
--- a/mongoose.c
+++ b/mongoose.c
@@ -2962,9 +2962,10 @@ size_t mg_websocket_write(struct mg_connection *conn, int opcode,
     } else {
       // 64-bit length field
       copy[1] = 127;
-      * (uint32_t *) (copy + 2) = (uint32_t)
-        htonl((uint32_t) ((uint64_t) data_len >> 32));
-      * (uint32_t *) (copy + 6) = (uint32_t) htonl(data_len & 0xffffffff);
+      const uint32_t hi = htonl((uint32_t) ((uint64_t) data_len >> 32));
+      const uint32_t lo = htonl(data_len & 0xffffffff);
+      memcpy(copy+2,&hi,sizeof(hi));
+      memcpy(copy+6,&lo,sizeof(lo));
       memcpy(copy + 10, data, data_len);
       copy_len = 10 + data_len;
     }