diff --git a/core/include/fxcrt/fx_string.h b/core/include/fxcrt/fx_string.h
index 1efb814..a7cf2e1 100644
--- a/core/include/fxcrt/fx_string.h
+++ b/core/include/fxcrt/fx_string.h
@@ -320,8 +320,6 @@
 
     FX_LPSTR				GetBuffer(FX_STRSIZE len);
 
-    FX_LPSTR				LockBuffer();
-
     void					ReleaseBuffer(FX_STRSIZE len = -1);
 
     CFX_ByteString			Mid(FX_STRSIZE first) const;
@@ -730,8 +728,6 @@
 
     FX_LPWSTR				GetBuffer(FX_STRSIZE len);
 
-    FX_LPWSTR				LockBuffer();
-
     void					ReleaseBuffer(FX_STRSIZE len = -1);
 
     int						GetInteger() const;
diff --git a/core/src/fpdfdoc/doc_bookmark.cpp b/core/src/fpdfdoc/doc_bookmark.cpp
index 9814de6..88dcf21 100644
--- a/core/src/fpdfdoc/doc_bookmark.cpp
+++ b/core/src/fpdfdoc/doc_bookmark.cpp
@@ -55,15 +55,13 @@
         return CFX_WideString();
     }
     CFX_WideString title = pString->GetUnicodeText();
-    FX_LPWSTR buf = title.LockBuffer();
     int len = title.GetLength();
+    FX_WCHAR buf[len];
     for (int i = 0; i < len; i++) {
-        if (buf[i] < 0x20) {
-            buf[i] = 0x20;
-        }
+        FX_WCHAR w = title[i];
+        buf[i] = w > 0x20 ? w : 0x20;
     }
-    title.ReleaseBuffer(len);
-    return title;
+    return CFX_WideString(buf, len);
 }
 CPDF_Dest CPDF_Bookmark::GetDest(CPDF_Document* pDocument) const
 {
diff --git a/core/src/fxcrt/fx_basic_bstring.cpp b/core/src/fxcrt/fx_basic_bstring.cpp
index cda7d1f..961aebe 100644
--- a/core/src/fxcrt/fx_basic_bstring.cpp
+++ b/core/src/fxcrt/fx_basic_bstring.cpp
@@ -341,15 +341,6 @@
     m_pData->m_nDataLength = nNewLength;
     m_pData->m_String[nNewLength] = 0;
 }
-FX_LPSTR CFX_ByteString::LockBuffer()
-{
-    if (m_pData == NULL) {
-        return NULL;
-    }
-    FX_LPSTR lpsz = GetBuffer(0);
-    m_pData->m_nRefs = -1;
-    return lpsz;
-}
 void CFX_ByteString::Reserve(FX_STRSIZE len)
 {
     GetBuffer(len);
diff --git a/core/src/fxcrt/fx_basic_wstring.cpp b/core/src/fxcrt/fx_basic_wstring.cpp
index e255aa0..2ea23e4 100644
--- a/core/src/fxcrt/fx_basic_wstring.cpp
+++ b/core/src/fxcrt/fx_basic_wstring.cpp
@@ -535,15 +535,6 @@
     }
     return 0;
 }
-FX_LPWSTR CFX_WideString::LockBuffer()
-{
-    if (m_pData == NULL) {
-        return NULL;
-    }
-    FX_LPWSTR lpsz = GetBuffer(0);
-    m_pData->m_nRefs = -1;
-    return lpsz;
-}
 void CFX_WideString::SetAt(FX_STRSIZE nIndex, FX_WCHAR ch)
 {
     if (m_pData == NULL) {
