diff --git a/core/fxcodec/jpeg/jpeg_common.h b/core/fxcodec/jpeg/jpeg_common.h
index 677e44d..6dda4b9 100644
--- a/core/fxcodec/jpeg/jpeg_common.h
+++ b/core/fxcodec/jpeg/jpeg_common.h
@@ -41,6 +41,7 @@
   struct jpeg_decompress_struct cinfo;
   struct jpeg_error_mgr error_mgr;
   struct jpeg_source_mgr source_mgr;
+  unsigned int skip_size;
 };
 typedef struct JpegCommon JpegCommon;
 
diff --git a/core/fxcodec/jpeg/jpeg_progressive_decoder.cpp b/core/fxcodec/jpeg/jpeg_progressive_decoder.cpp
index 9f6072a..21d7b6e 100644
--- a/core/fxcodec/jpeg/jpeg_progressive_decoder.cpp
+++ b/core/fxcodec/jpeg/jpeg_progressive_decoder.cpp
@@ -27,20 +27,19 @@
   jmp_buf& GetJumpMark() { return m_Common.jmpbuf; }
 
   JpegCommon m_Common = {};
-  unsigned int m_SkipSize = 0;
 };
 
 extern "C" {
 
 static void error_fatal(j_common_ptr cinfo) {
-  auto* pContext = reinterpret_cast<CJpegContext*>(cinfo->client_data);
-  longjmp(pContext->m_Common.jmpbuf, -1);
+  auto* pCommon = reinterpret_cast<JpegCommon*>(cinfo->client_data);
+  longjmp(pCommon->jmpbuf, -1);
 }
 
 static void src_skip_data(jpeg_decompress_struct* cinfo, long num) {
   if (cinfo->src->bytes_in_buffer < static_cast<size_t>(num)) {
-    auto* pContext = reinterpret_cast<CJpegContext*>(cinfo->client_data);
-    pContext->m_SkipSize = (unsigned int)(num - cinfo->src->bytes_in_buffer);
+    auto* pCommon = reinterpret_cast<JpegCommon*>(cinfo->client_data);
+    pCommon->skip_size = (unsigned int)(num - cinfo->src->bytes_in_buffer);
     cinfo->src->bytes_in_buffer = 0;
   } else {
     // SAFETY: required from library during callback.
@@ -60,7 +59,7 @@
 }
 
 CJpegContext::CJpegContext() {
-  m_Common.cinfo.client_data = this;
+  m_Common.cinfo.client_data = &m_Common;
   m_Common.cinfo.err = &m_Common.error_mgr;
 
   m_Common.error_mgr.error_exit = error_fatal;
@@ -113,7 +112,7 @@
     return nullptr;
   }
   pContext->m_Common.cinfo.src = &pContext->m_Common.source_mgr;
-  pContext->m_SkipSize = 0;
+  pContext->m_Common.skip_size = 0;
   return pContext;
 }
 
@@ -168,14 +167,14 @@
                                    RetainPtr<CFX_CodecMemory> codec_memory) {
   pdfium::span<uint8_t> src_buf = codec_memory->GetUnconsumedSpan();
   auto* ctx = static_cast<CJpegContext*>(pContext);
-  if (ctx->m_SkipSize) {
-    if (ctx->m_SkipSize > src_buf.size()) {
+  if (ctx->m_Common.skip_size) {
+    if (ctx->m_Common.skip_size > src_buf.size()) {
       ctx->m_Common.source_mgr.bytes_in_buffer = 0;
-      ctx->m_SkipSize -= src_buf.size();
+      ctx->m_Common.skip_size -= src_buf.size();
       return true;
     }
-    src_buf = src_buf.subspan(ctx->m_SkipSize);
-    ctx->m_SkipSize = 0;
+    src_buf = src_buf.subspan(ctx->m_Common.skip_size);
+    ctx->m_Common.skip_size = 0;
   }
   ctx->m_Common.source_mgr.next_input_byte = src_buf.data();
   ctx->m_Common.source_mgr.bytes_in_buffer = src_buf.size();
diff --git a/core/fxcodec/jpeg/jpegmodule.cpp b/core/fxcodec/jpeg/jpegmodule.cpp
index 664a454..068e99e 100644
--- a/core/fxcodec/jpeg/jpegmodule.cpp
+++ b/core/fxcodec/jpeg/jpegmodule.cpp
@@ -38,7 +38,8 @@
 extern "C" {
 
 static void error_fatal(j_common_ptr cinfo) {
-  longjmp(*(jmp_buf*)cinfo->client_data, -1);
+  auto* pCommon = reinterpret_cast<JpegCommon*>(cinfo->client_data);
+  longjmp(pCommon->jmpbuf, -1);
 }
 
 static void src_skip_data(jpeg_decompress_struct* cinfo, long num) {
@@ -72,7 +73,7 @@
   jpeg_common.error_mgr.reset_error_mgr = jpeg_common_error_do_nothing;
   jpeg_common.error_mgr.trace_level = 0;
   jpeg_common.cinfo.err = &jpeg_common.error_mgr;
-  jpeg_common.cinfo.client_data = &jpeg_common.jmpbuf;
+  jpeg_common.cinfo.client_data = &jpeg_common;
   if (!jpeg_common_create_decompress(&jpeg_common)) {
     return false;
   }
@@ -168,7 +169,7 @@
 
 bool JpegDecoder::InitDecode(bool bAcceptKnownBadHeader) {
   m_Common.cinfo.err = &m_Common.error_mgr;
-  m_Common.cinfo.client_data = &m_Common.jmpbuf;
+  m_Common.cinfo.client_data = &m_Common;
   if (!jpeg_common_create_decompress(&m_Common)) {
     return false;
   }
