diff --git a/lib/lws-plat-unix.c b/lib/lws-plat-unix.c
index 3466284f..ad171883 100644
--- a/lib/lws-plat-unix.c
+++ b/lib/lws-plat-unix.c
@@ -116,7 +116,7 @@ LWS_VISIBLE void lwsl_emit_syslog(int level, const char *line)
 LWS_VISIBLE int
 lws_plat_service_tsi(struct lws_context *context, int timeout_ms, int tsi)
 {
-	struct lws_context_per_thread *pt = &context->pt[tsi];
+	struct lws_context_per_thread *pt;
 	int n = -1, m, c;
 	char buf;
 
@@ -125,6 +125,8 @@ lws_plat_service_tsi(struct lws_context *context, int timeout_ms, int tsi)
 	if (!context || !context->vhost_list)
 		return 1;
 
+	pt = &context->pt[tsi];
+
 	if (timeout_ms < 0)
 		goto faked_service;
 
diff --git a/lib/lws-plat-win.c b/lib/lws-plat-win.c
index 49a7fc80..2df5cbd2 100644
--- a/lib/lws-plat-win.c
+++ b/lib/lws-plat-win.c
@@ -156,7 +156,7 @@ LWS_VISIBLE void lwsl_emit_syslog(int level, const char *line)
 LWS_VISIBLE int
 lws_plat_service_tsi(struct lws_context *context, int timeout_ms, int tsi)
 {
-	struct lws_context_per_thread *pt = &context->pt[tsi];
+	struct lws_context_per_thread *pt;
 	WSANETWORKEVENTS networkevents;
 	struct lws_pollfd *pfd;
 	struct lws *wsi;
@@ -168,6 +168,8 @@ lws_plat_service_tsi(struct lws_context *context, int timeout_ms, int tsi)
 	if (context == NULL)
 		return 1;
 
+	pt = &context->pt[tsi];
+
 	if (!context->service_tid_detected) {
 		struct lws _lws;