diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp
index 5ba7cbe..58420ff 100644
--- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp
+++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp
@@ -4682,7 +4682,7 @@
   // where in the page's content stream the object is first referenced.
   FX_DWORD dwSharedNumeratorBits = hStream->GetBits(16);
   // Item 13: Skip Item 13 which has 16 bits.
-  FX_DWORD dwSharedDenominator = hStream->GetBits(16);
+  hStream->SkipBits(16);
   CPDF_Object* pPageNum = m_pLinearizedDict->GetElementValue(FX_BSTRC("N"));
   int nPages = pPageNum ? pPageNum->GetInteger() : 0;
   if (nPages < 1)
diff --git a/core/src/fpdfapi/fpdf_parser/parser_int.h b/core/src/fpdfapi/fpdf_parser/parser_int.h
index a9d5874..5e4dffa 100644
--- a/core/src/fpdfapi/fpdf_parser/parser_int.h
+++ b/core/src/fpdfapi/fpdf_parser/parser_int.h
@@ -13,7 +13,6 @@
  public:
   CPDF_HintTables(CPDF_DataAvail* pDataAvail, CPDF_Dictionary* pLinearized)
       : m_pLinearizedDict(pLinearized),
-        m_pHintStream(nullptr),
         m_pDataAvail(pDataAvail),
         m_nFirstPageSharedObjs(0),
         m_szFirstPageObjOffset(0) {}
@@ -35,7 +34,6 @@
   int ReadPrimaryHintStreamLength() const;
 
   CPDF_Dictionary* m_pLinearizedDict;
-  CPDF_Stream* m_pHintStream;
   CPDF_DataAvail* m_pDataAvail;
   FX_DWORD m_nFirstPageSharedObjs;
   FX_FILESIZE m_szFirstPageObjOffset;
diff --git a/samples/pdfium_test.cc b/samples/pdfium_test.cc
index 9ae9e27..3e71a60 100644
--- a/samples/pdfium_test.cc
+++ b/samples/pdfium_test.cc
@@ -332,14 +332,14 @@
 void Add_Segment(FX_DOWNLOADHINTS* pThis, size_t offset, size_t size) {
 }
 
-FPDF_BOOL RenderPage(const std::string& name,
-                     const FPDF_DOCUMENT& doc,
-                     const FPDF_FORMHANDLE& form,
-                     const int page_index,
-                     const Options& options) {
+bool RenderPage(const std::string& name,
+                const FPDF_DOCUMENT& doc,
+                const FPDF_FORMHANDLE& form,
+                const int page_index,
+                const Options& options) {
   FPDF_PAGE page = FPDF_LoadPage(doc, page_index);
   if (!page) {
-    return FALSE;
+    return false;
   }
   FPDF_TEXTPAGE text_page = FPDFText_LoadPage(page);
   FORM_OnAfterLoadPage(page, form);
@@ -355,7 +355,7 @@
   FPDF_BITMAP bitmap = FPDFBitmap_Create(width, height, 0);
   if (!bitmap) {
     fprintf(stderr, "Page was too large to be rendered.\n");
-    return FALSE;
+    return false;
   }
 
   FPDFBitmap_FillRect(bitmap, 0, 0, width, height, 0xFFFFFFFF);
@@ -393,7 +393,7 @@
   FORM_OnBeforeClosePage(page, form);
   FPDFText_ClosePage(text_page);
   FPDF_ClosePage(page);
-  return TRUE;
+  return true;
 }
 
 void RenderPdf(const std::string& name, const char* pBuf, size_t len,
@@ -430,7 +430,7 @@
 
   FPDF_DOCUMENT doc;
   int nRet = PDF_DATA_NOTAVAIL;
-  FPDF_BOOL bIsLinearized = FALSE;
+  bool bIsLinearized = false;
   FPDF_AVAIL pdf_avail = FPDFAvail_Create(&file_avail, &file_access);
   if (FPDFAvail_IsLinearized(pdf_avail) == PDF_LINEARIZED) {
     fprintf(stderr, "Linearized path...\n");
@@ -450,7 +450,7 @@
                 nRet);
         return;
       }
-      bIsLinearized = TRUE;
+      bIsLinearized = true;
     }
   } else {
     fprintf(stderr, "Non-linearized path...\n");
