aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/fs/io/FileOutputStream.cxx12
-rw-r--r--src/fs/io/FileOutputStream.hxx1
-rw-r--r--src/output/plugins/RecorderOutputPlugin.cxx6
3 files changed, 15 insertions, 4 deletions
diff --git a/src/fs/io/FileOutputStream.cxx b/src/fs/io/FileOutputStream.cxx
index 7a6416557..11b5b2351 100644
--- a/src/fs/io/FileOutputStream.cxx
+++ b/src/fs/io/FileOutputStream.cxx
@@ -22,6 +22,18 @@
#include "fs/FileSystem.hxx"
#include "util/Error.hxx"
+FileOutputStream *
+FileOutputStream::Create(Path path, Error &error)
+{
+ FileOutputStream *f = new FileOutputStream(path, error);
+ if (!f->IsDefined()) {
+ delete f;
+ f = nullptr;
+ }
+
+ return f;
+}
+
#ifdef WIN32
FileOutputStream::FileOutputStream(Path _path, Error &error)
diff --git a/src/fs/io/FileOutputStream.hxx b/src/fs/io/FileOutputStream.hxx
index 03d062134..f66554ec9 100644
--- a/src/fs/io/FileOutputStream.hxx
+++ b/src/fs/io/FileOutputStream.hxx
@@ -58,6 +58,7 @@ public:
Cancel();
}
+ static FileOutputStream *Create(Path path, Error &error);
bool IsDefined() const {
#ifdef WIN32
diff --git a/src/output/plugins/RecorderOutputPlugin.cxx b/src/output/plugins/RecorderOutputPlugin.cxx
index f6508e33c..22915e39f 100644
--- a/src/output/plugins/RecorderOutputPlugin.cxx
+++ b/src/output/plugins/RecorderOutputPlugin.cxx
@@ -167,11 +167,9 @@ RecorderOutput::Open(AudioFormat &audio_format, Error &error)
{
/* create the output file */
- file = new FileOutputStream(path, error);
- if (!file->IsDefined()) {
- delete file;
+ file = FileOutputStream::Create(path, error);
+ if (file == nullptr)
return false;
- }
/* open the encoder */