diff --git a/fpdfsdk/javascript/JS_GlobalData.cpp b/fpdfsdk/javascript/JS_GlobalData.cpp
index fe3475c..8f7810f 100644
--- a/fpdfsdk/javascript/JS_GlobalData.cpp
+++ b/fpdfsdk/javascript/JS_GlobalData.cpp
@@ -94,9 +94,7 @@
     0xf8, 0x77, 0xd5, 0xa3};
 
 // Returns true if non-empty, setting sPropName
-static bool TrimPropName(const char* propname, CFX_ByteString* sPropName) {
-  ASSERT(propname);
-  *sPropName = propname;
+static bool TrimPropName(CFX_ByteString* sPropName) {
   sPropName->TrimLeft();
   sPropName->TrimRight();
   return sPropName->GetLength() != 0;
@@ -130,7 +128,7 @@
 }
 
 CJS_GlobalData::iterator CJS_GlobalData::FindGlobalVariable(
-    const FX_CHAR* propname) {
+    const CFX_ByteString& propname) {
   for (auto it = m_arrayGlobalData.begin(); it != m_arrayGlobalData.end();
        ++it) {
     if ((*it)->data.sKey == propname)
@@ -140,7 +138,7 @@
 }
 
 CJS_GlobalData::const_iterator CJS_GlobalData::FindGlobalVariable(
-    const FX_CHAR* propname) const {
+    const CFX_ByteString& propname) const {
   for (auto it = m_arrayGlobalData.begin(); it != m_arrayGlobalData.end();
        ++it) {
     if ((*it)->data.sKey == propname)
@@ -150,15 +148,15 @@
 }
 
 CJS_GlobalData_Element* CJS_GlobalData::GetGlobalVariable(
-    const FX_CHAR* propname) {
+    const CFX_ByteString& propname) {
   auto iter = FindGlobalVariable(propname);
   return iter != m_arrayGlobalData.end() ? iter->get() : nullptr;
 }
 
-void CJS_GlobalData::SetGlobalVariableNumber(const FX_CHAR* propname,
+void CJS_GlobalData::SetGlobalVariableNumber(const CFX_ByteString& propname,
                                              double dData) {
-  CFX_ByteString sPropName;
-  if (!TrimPropName(propname, &sPropName))
+  CFX_ByteString sPropName(propname);
+  if (!TrimPropName(&sPropName))
     return;
 
   if (CJS_GlobalData_Element* pData = GetGlobalVariable(sPropName)) {
@@ -173,10 +171,10 @@
   m_arrayGlobalData.push_back(std::move(pNewData));
 }
 
-void CJS_GlobalData::SetGlobalVariableBoolean(const FX_CHAR* propname,
+void CJS_GlobalData::SetGlobalVariableBoolean(const CFX_ByteString& propname,
                                               bool bData) {
-  CFX_ByteString sPropName;
-  if (!TrimPropName(propname, &sPropName))
+  CFX_ByteString sPropName(propname);
+  if (!TrimPropName(&sPropName))
     return;
 
   if (CJS_GlobalData_Element* pData = GetGlobalVariable(sPropName)) {
@@ -191,10 +189,10 @@
   m_arrayGlobalData.push_back(std::move(pNewData));
 }
 
-void CJS_GlobalData::SetGlobalVariableString(const FX_CHAR* propname,
+void CJS_GlobalData::SetGlobalVariableString(const CFX_ByteString& propname,
                                              const CFX_ByteString& sData) {
-  CFX_ByteString sPropName;
-  if (!TrimPropName(propname, &sPropName))
+  CFX_ByteString sPropName(propname);
+  if (!TrimPropName(&sPropName))
     return;
 
   if (CJS_GlobalData_Element* pData = GetGlobalVariable(sPropName)) {
@@ -210,10 +208,10 @@
 }
 
 void CJS_GlobalData::SetGlobalVariableObject(
-    const FX_CHAR* propname,
+    const CFX_ByteString& propname,
     const CJS_GlobalVariableArray& array) {
-  CFX_ByteString sPropName;
-  if (!TrimPropName(propname, &sPropName))
+  CFX_ByteString sPropName(propname);
+  if (!TrimPropName(&sPropName))
     return;
 
   if (CJS_GlobalData_Element* pData = GetGlobalVariable(sPropName)) {
@@ -228,9 +226,9 @@
   m_arrayGlobalData.push_back(std::move(pNewData));
 }
 
-void CJS_GlobalData::SetGlobalVariableNull(const FX_CHAR* propname) {
-  CFX_ByteString sPropName;
-  if (!TrimPropName(propname, &sPropName))
+void CJS_GlobalData::SetGlobalVariableNull(const CFX_ByteString& propname) {
+  CFX_ByteString sPropName(propname);
+  if (!TrimPropName(&sPropName))
     return;
 
   if (CJS_GlobalData_Element* pData = GetGlobalVariable(sPropName)) {
@@ -243,10 +241,11 @@
   m_arrayGlobalData.push_back(std::move(pNewData));
 }
 
-FX_BOOL CJS_GlobalData::SetGlobalVariablePersistent(const FX_CHAR* propname,
-                                                    FX_BOOL bPersistent) {
-  CFX_ByteString sPropName;
-  if (!TrimPropName(propname, &sPropName))
+FX_BOOL CJS_GlobalData::SetGlobalVariablePersistent(
+    const CFX_ByteString& propname,
+    FX_BOOL bPersistent) {
+  CFX_ByteString sPropName(propname);
+  if (!TrimPropName(&sPropName))
     return FALSE;
 
   CJS_GlobalData_Element* pData = GetGlobalVariable(sPropName);
@@ -257,9 +256,9 @@
   return TRUE;
 }
 
-FX_BOOL CJS_GlobalData::DeleteGlobalVariable(const FX_CHAR* propname) {
-  CFX_ByteString sPropName;
-  if (!TrimPropName(propname, &sPropName))
+FX_BOOL CJS_GlobalData::DeleteGlobalVariable(const CFX_ByteString& propname) {
+  CFX_ByteString sPropName(propname);
+  if (!TrimPropName(&sPropName))
     return FALSE;
 
   auto iter = FindGlobalVariable(sPropName);
@@ -292,8 +291,6 @@
     uint16_t wType = *((uint16_t*)p);
     p += sizeof(uint16_t);
 
-    // uint16_t wTemp = (uint16_t)(('X' << 8) | 'F');
-
     if (wType == (uint16_t)(('X' << 8) | 'F')) {
       uint16_t wVersion = *((uint16_t*)p);
       p += sizeof(uint16_t);
diff --git a/fpdfsdk/javascript/JS_GlobalData.h b/fpdfsdk/javascript/JS_GlobalData.h
index 65bb921..056f261 100644
--- a/fpdfsdk/javascript/JS_GlobalData.h
+++ b/fpdfsdk/javascript/JS_GlobalData.h
@@ -64,17 +64,16 @@
   static CJS_GlobalData* GetRetainedInstance(CPDFDoc_Environment* pApp);
   void Release();
 
-  void SetGlobalVariableNumber(const FX_CHAR* propname, double dData);
-  void SetGlobalVariableBoolean(const FX_CHAR* propname, bool bData);
-  void SetGlobalVariableString(const FX_CHAR* propname,
+  void SetGlobalVariableNumber(const CFX_ByteString& propname, double dData);
+  void SetGlobalVariableBoolean(const CFX_ByteString& propname, bool bData);
+  void SetGlobalVariableString(const CFX_ByteString& propname,
                                const CFX_ByteString& sData);
-  void SetGlobalVariableObject(const FX_CHAR* propname,
+  void SetGlobalVariableObject(const CFX_ByteString& propname,
                                const CJS_GlobalVariableArray& array);
-  void SetGlobalVariableNull(const FX_CHAR* propname);
-
-  FX_BOOL SetGlobalVariablePersistent(const FX_CHAR* propname,
+  void SetGlobalVariableNull(const CFX_ByteString& propname);
+  FX_BOOL SetGlobalVariablePersistent(const CFX_ByteString& propname,
                                       FX_BOOL bPersistent);
-  FX_BOOL DeleteGlobalVariable(const FX_CHAR* propname);
+  FX_BOOL DeleteGlobalVariable(const CFX_ByteString& propname);
 
   int32_t GetSize() const;
   CJS_GlobalData_Element* GetAt(int index) const;
@@ -93,9 +92,9 @@
   void LoadGlobalPersistentVariables();
   void SaveGlobalPersisitentVariables();
 
-  CJS_GlobalData_Element* GetGlobalVariable(const FX_CHAR* propname);
-  iterator FindGlobalVariable(const FX_CHAR* propname);
-  const_iterator FindGlobalVariable(const FX_CHAR* propname) const;
+  CJS_GlobalData_Element* GetGlobalVariable(const CFX_ByteString& sPropname);
+  iterator FindGlobalVariable(const CFX_ByteString& sPropname);
+  const_iterator FindGlobalVariable(const CFX_ByteString& sPropname) const;
 
   void LoadFileBuffer(const FX_WCHAR* sFilePath,
                       uint8_t*& pBuffer,
diff --git a/fpdfsdk/javascript/global.cpp b/fpdfsdk/javascript/global.cpp
index fe974c7..d843b60 100644
--- a/fpdfsdk/javascript/global.cpp
+++ b/fpdfsdk/javascript/global.cpp
@@ -407,7 +407,7 @@
   m_mapGlobal.clear();
 }
 
-FX_BOOL JSGlobalAlternate::SetGlobalVariables(const FX_CHAR* propname,
+FX_BOOL JSGlobalAlternate::SetGlobalVariables(const CFX_ByteString& propname,
                                               int nType,
                                               double dData,
                                               bool bData,
diff --git a/fpdfsdk/javascript/global.h b/fpdfsdk/javascript/global.h
index 335b540..02c51d9 100644
--- a/fpdfsdk/javascript/global.h
+++ b/fpdfsdk/javascript/global.h
@@ -59,7 +59,7 @@
   void UpdateGlobalPersistentVariables();
   void CommitGlobalPersisitentVariables(IJS_Context* cc);
   void DestroyGlobalPersisitentVariables();
-  FX_BOOL SetGlobalVariables(const FX_CHAR* propname,
+  FX_BOOL SetGlobalVariables(const CFX_ByteString& propname,
                              int nType,
                              double dData,
                              bool bData,
