Skip to content

Commit

Permalink
Possible fix for coverity #29375
Browse files Browse the repository at this point in the history
  • Loading branch information
tobbi committed Feb 28, 2015
1 parent 05d168f commit 27b03ae
Show file tree
Hide file tree
Showing 5 changed files with 89 additions and 8 deletions.
5 changes: 3 additions & 2 deletions src/lisp/writer.cpp
Expand Up @@ -16,7 +16,7 @@

#include "lisp/writer.hpp"

#include "physfs/ofile_stream.hpp"
#include "physfs/buffered_ofile_stream.hpp"
#include "util/log.hpp"

namespace lisp {
Expand All @@ -27,7 +27,8 @@ Writer::Writer(const std::string& filename) :
indent_depth(),
lists()
{
out = new OFileStream(filename);
BufferedOFileStream* filestream = new BufferedOFileStream(filename);
out = filestream->get_stream();
out_owned = true;
indent_depth = 0;
out->precision(10);
Expand Down
43 changes: 43 additions & 0 deletions src/physfs/buffered_ofile_stream.cpp
@@ -0,0 +1,43 @@
// SuperTux
// Copyright (C) 2015 Tobias Markus <tobbi@mozilla-uk.org>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.

#ifndef HEADER_SUPERTUX_PHYSFS_BUFFERED_OFILE_STREAM_CPP
#define HEADER_SUPERTUX_PHYSFS_BUFFERED_OFILE_STREAM_CPP

#include "physfs/buffered_ofile_stream.hpp"

BufferedOFileStream::BufferedOFileStream(const std::string& filename)
{
buffer = new OFileStreambuf(filename);
stream = new OFileStream(buffer);
}

BufferedOFileStream::~BufferedOFileStream()
{
delete buffer;
delete stream;
buffer = NULL;
stream = NULL;
}

OFileStream* BufferedOFileStream::get_stream()
{
return stream;
}

#endif

/* EOF */
39 changes: 39 additions & 0 deletions src/physfs/buffered_ofile_stream.hpp
@@ -0,0 +1,39 @@
// SuperTux
// Copyright (C) 2015 Tobias Markus <tobbi@mozilla-uk.org>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.

#ifndef HEADER_SUPERTUX_PHYSFS_BUFFERED_OFILE_STREAM_HPP
#define HEADER_SUPERTUX_PHYSFS_BUFFERED_OFILE_STREAM_HPP

#include <ostream>
#include <physfs.h>
#include "physfs/ofile_stream.hpp"
#include "physfs/ofile_streambuf.hpp"

class BufferedOFileStream {

private:
OFileStream* stream;
OFileStreambuf* buffer;

public:
BufferedOFileStream(const std::string& filename);
~BufferedOFileStream();

OFileStream* get_stream();
};
#endif

/* EOF */
6 changes: 2 additions & 4 deletions src/physfs/ofile_stream.cpp
Expand Up @@ -19,10 +19,8 @@

#include "physfs/ofile_stream.hpp"

#include "physfs/ofile_streambuf.hpp"

OFileStream::OFileStream(const std::string& filename) :
std::ostream(new OFileStreambuf(filename))
OFileStream::OFileStream(OFileStreambuf* buf) :
std::ostream(buf)
{
}

Expand Down
4 changes: 2 additions & 2 deletions src/physfs/ofile_stream.hpp
Expand Up @@ -19,14 +19,14 @@

#include <ostream>
#include <physfs.h>
#include "physfs/ofile_streambuf.hpp"

class OFileStream : public std::ostream
{
public:
OFileStream(const std::string& filename);
OFileStream(OFileStreambuf* buf);
~OFileStream();
};

#endif

/* EOF */

0 comments on commit 27b03ae

Please sign in to comment.