diff --git pdftoipe/pdftoipe.cpp pdftoipe/pdftoipe.cpp
index 2e6ce77..bd2d86d 100644
--- pdftoipe/pdftoipe.cpp
+++ pdftoipe/pdftoipe.cpp
@@ -87,22 +87,20 @@ int main(int argc, char *argv[])
   if (quiet)
     globalParams->setErrQuiet(quiet);
 
-  GooString *ownerPW, *userPW;
+  std::optional<GooString> ownerPW, userPW;
   if (ownerPassword[0]) {
-    ownerPW = new GooString(ownerPassword);
+    ownerPW = GooString(ownerPassword);
   } else {
-    ownerPW = 0;
+    ownerPW = std::nullopt;
   }
   if (userPassword[0]) {
-    userPW = new GooString(userPassword);
+    userPW = GooString(userPassword);
   } else {
-    userPW = 0;
+    userPW = std::nullopt;
   }
 
   // open PDF file
-  PDFDoc *doc = new PDFDoc(fileName, ownerPW, userPW);
-  delete userPW;
-  delete ownerPW;
+  PDFDoc *doc = new PDFDoc(std::make_unique<GooString>(fileName), ownerPW, userPW);
 
   if (!doc->isOk())
     return 1;
-- 
2.36.1

