summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2021-10-11 19:55:06 +0200
committerCarl Hetherington <cth@carlh.net>2022-05-02 00:22:43 +0200
commit809bcfd85fad2ef7d4131c054be4cccd5bcc9d05 (patch)
tree8170cee031af2209afa1905b8703f77b6d748d8e /src
parent9a9ce1aec97db89b00bc216edf7cee5f3d48670e (diff)
Replace some raw arrays with std::vectors.
Diffstat (limited to 'src')
-rw-r--r--src/lib/cross_windows.cc7
-rw-r--r--src/lib/ffmpeg_encoder.cc7
-rw-r--r--src/lib/file_log.cc11
-rw-r--r--src/lib/image_examiner.cc8
-rw-r--r--src/lib/update_checker.cc7
-rw-r--r--src/lib/update_checker.h2
-rw-r--r--src/tools/dcpomatic.cc5
-rw-r--r--src/tools/dcpomatic_player.cc5
-rw-r--r--src/wx/gl_video_view.cc14
9 files changed, 28 insertions, 38 deletions
diff --git a/src/lib/cross_windows.cc b/src/lib/cross_windows.cc
index a7e7bdd55..f76380836 100644
--- a/src/lib/cross_windows.cc
+++ b/src/lib/cross_windows.cc
@@ -353,10 +353,9 @@ static string
wchar_to_utf8 (wchar_t const * s)
{
int const length = (wcslen(s) + 1) * 2;
- char* utf8 = new char[length];
- WideCharToMultiByte (CP_UTF8, 0, s, -1, utf8, length, 0, 0);
- string u (utf8);
- delete[] utf8;
+ std::vector<char> utf8(length);
+ WideCharToMultiByte (CP_UTF8, 0, s, -1, utf8.data(), length, 0, 0);
+ string u (utf8.data());
return u;
}
diff --git a/src/lib/ffmpeg_encoder.cc b/src/lib/ffmpeg_encoder.cc
index 8f36bbda1..d4f0b4b47 100644
--- a/src/lib/ffmpeg_encoder.cc
+++ b/src/lib/ffmpeg_encoder.cc
@@ -161,7 +161,7 @@ FFmpegEncoder::go ()
auto const video_frame = DCPTime::from_frames (1, _film->video_frame_rate ());
int const audio_frames = video_frame.frames_round(_film->audio_frame_rate());
- float* interleaved = new float[_output_audio_channels * audio_frames];
+ std::vector<float> interleaved(_output_audio_channels * audio_frames);
auto deinterleaved = make_shared<AudioBuffers>(_output_audio_channels, audio_frames);
int const gets_per_frame = _film->three_d() ? 2 : 1;
for (DCPTime i; i < _film->length(); i += video_frame) {
@@ -204,9 +204,9 @@ FFmpegEncoder::go ()
waker.nudge ();
- _butler->get_audio (Butler::Behaviour::BLOCKING, interleaved, audio_frames);
+ _butler->get_audio (Butler::Behaviour::BLOCKING, interleaved.data(), audio_frames);
/* XXX: inefficient; butler interleaves and we deinterleave again */
- float* p = interleaved;
+ float* p = interleaved.data();
for (int j = 0; j < audio_frames; ++j) {
for (int k = 0; k < _output_audio_channels; ++k) {
deinterleaved->data(k)[j] = *p++;
@@ -214,7 +214,6 @@ FFmpegEncoder::go ()
}
encoder->audio (deinterleaved);
}
- delete[] interleaved;
for (auto i: file_encoders) {
i.flush ();
diff --git a/src/lib/file_log.cc b/src/lib/file_log.cc
index 4d6a0e6ea..a9522bad5 100644
--- a/src/lib/file_log.cc
+++ b/src/lib/file_log.cc
@@ -87,23 +87,22 @@ FileLog::head_and_tail (int amount) const
string out;
- auto buffer = new char[max(head_amount, tail_amount) + 1];
+ std::vector<char> buffer(max(head_amount, tail_amount) + 1);
- int N = fread (buffer, 1, head_amount, f);
+ int N = fread (buffer.data(), 1, head_amount, f);
buffer[N] = '\0';
- out += string (buffer);
+ out += string (buffer.data());
if (tail_amount > 0) {
out += "\n .\n .\n .\n";
fseek (f, - tail_amount - 1, SEEK_END);
- N = fread (buffer, 1, tail_amount, f);
+ N = fread (buffer.data(), 1, tail_amount, f);
buffer[N] = '\0';
- out += string (buffer) + "\n";
+ out += string (buffer.data()) + "\n";
}
- delete[] buffer;
fclose (f);
return out;
diff --git a/src/lib/image_examiner.cc b/src/lib/image_examiner.cc
index 2235c2e69..5a1672204 100644
--- a/src/lib/image_examiner.cc
+++ b/src/lib/image_examiner.cc
@@ -55,16 +55,14 @@ ImageExaminer::ImageExaminer (shared_ptr<const Film> film, shared_ptr<const Imag
if (!f) {
throw FileError ("Could not open file for reading", path);
}
- auto buffer = new uint8_t[size];
- checked_fread (buffer, size, f, path);
+ std::vector<uint8_t> buffer(size);
+ checked_fread (buffer.data(), size, f, path);
fclose (f);
try {
- _video_size = dcp::decompress_j2k (buffer, size, 0)->size ();
+ _video_size = dcp::decompress_j2k(buffer.data(), size, 0)->size();
} catch (dcp::ReadError& e) {
- delete[] buffer;
throw DecodeError (String::compose (_("Could not decode JPEG2000 file %1 (%2)"), path, e.what ()));
}
- delete[] buffer;
} else {
FFmpegImageProxy proxy(content->path(0));
_video_size = proxy.image(Image::Alignment::COMPACT).image->size();
diff --git a/src/lib/update_checker.cc b/src/lib/update_checker.cc
index 3bc02b50a..2c2e23be1 100644
--- a/src/lib/update_checker.cc
+++ b/src/lib/update_checker.cc
@@ -57,7 +57,7 @@ write_callback_wrapper (void* data, size_t size, size_t nmemb, void* user)
* do the work.
*/
UpdateChecker::UpdateChecker ()
- : _buffer (new char[BUFFER_SIZE])
+ : _buffer (BUFFER_SIZE)
, _state (State::NOT_RUN)
{
_curl = curl_easy_init ();
@@ -97,7 +97,6 @@ UpdateChecker::~UpdateChecker ()
} catch (...) {}
curl_easy_cleanup (_curl);
- delete[] _buffer;
}
@@ -142,7 +141,7 @@ UpdateChecker::thread ()
/* Parse the reply */
_buffer[_offset] = '\0';
- string s (_buffer);
+ string s (_buffer.data());
cxml::Document doc ("Update");
doc.read_string (s);
@@ -181,7 +180,7 @@ size_t
UpdateChecker::write_callback (void* data, size_t size, size_t nmemb)
{
size_t const t = min (size * nmemb, size_t (BUFFER_SIZE - _offset - 1));
- memcpy (_buffer + _offset, data, t);
+ memcpy (_buffer.data() + _offset, data, t);
_offset += t;
return t;
}
diff --git a/src/lib/update_checker.h b/src/lib/update_checker.h
index aa5f620e6..53ef4457b 100644
--- a/src/lib/update_checker.h
+++ b/src/lib/update_checker.h
@@ -89,7 +89,7 @@ private:
void set_state (State);
void thread ();
- char* _buffer;
+ std::vector<char> _buffer;
int _offset = 0;
CURL* _curl = nullptr;
diff --git a/src/tools/dcpomatic.cc b/src/tools/dcpomatic.cc
index 8455163bb..e9302c6a0 100644
--- a/src/tools/dcpomatic.cc
+++ b/src/tools/dcpomatic.cc
@@ -389,7 +389,7 @@ public:
#else
int accelerators = 6;
#endif
- auto accel = new wxAcceleratorEntry[accelerators];
+ std::vector<wxAcceleratorEntry> accel(accelerators);
/* [Shortcut] Ctrl+A:Add file(s) to the film */
accel[0].Set (wxACCEL_CTRL, static_cast<int>('A'), ID_add_file);
/* [Shortcut] Delete:Remove selected content from film */
@@ -411,9 +411,8 @@ public:
Bind (wxEVT_MENU, boost::bind (&DOMFrame::timeline_pressed, this), ID_timeline);
Bind (wxEVT_MENU, boost::bind (&DOMFrame::back_frame, this), ID_back_frame);
Bind (wxEVT_MENU, boost::bind (&DOMFrame::forward_frame, this), ID_forward_frame);
- wxAcceleratorTable accel_table (accelerators, accel);
+ wxAcceleratorTable accel_table (accelerators, accel.data());
SetAcceleratorTable (accel_table);
- delete[] accel;
}
void remove_accelerators ()
diff --git a/src/tools/dcpomatic_player.cc b/src/tools/dcpomatic_player.cc
index d1d4720ed..7603b9842 100644
--- a/src/tools/dcpomatic_player.cc
+++ b/src/tools/dcpomatic_player.cc
@@ -224,7 +224,7 @@ public:
_stress.setup (this, _controls);
- wxAcceleratorEntry* accel = new wxAcceleratorEntry[accelerators];
+ std::vector<wxAcceleratorEntry> accel(accelerators);
accel[0].Set(wxACCEL_NORMAL, WXK_SPACE, ID_start_stop);
accel[1].Set(wxACCEL_NORMAL, WXK_LEFT, ID_go_back_frame);
accel[2].Set(wxACCEL_NORMAL, WXK_RIGHT, ID_go_forward_frame);
@@ -239,9 +239,8 @@ public:
#ifdef __WXOSX__
accel[11].Set(wxACCEL_CTRL, static_cast<int>('W'), ID_file_close);
#endif
- wxAcceleratorTable accel_table (accelerators, accel);
+ wxAcceleratorTable accel_table (accelerators, accel.data());
SetAcceleratorTable (accel_table);
- delete[] accel;
Bind (wxEVT_MENU, boost::bind(&DOMFrame::start_stop_pressed, this), ID_start_stop);
Bind (wxEVT_MENU, boost::bind(&DOMFrame::go_back_frame, this), ID_go_back_frame);
diff --git a/src/wx/gl_video_view.cc b/src/wx/gl_video_view.cc
index be13cea43..1073cb944 100644
--- a/src/wx/gl_video_view.cc
+++ b/src/wx/gl_video_view.cc
@@ -408,10 +408,9 @@ GLVideoView::setup_shaders ()
glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &log_length);
string log;
if (log_length > 0) {
- char* log_char = new char[log_length];
- glGetShaderInfoLog(shader, log_length, nullptr, log_char);
- log = string(log_char);
- delete[] log_char;
+ std::vector<char> log_char(log_length);
+ glGetShaderInfoLog(shader, log_length, nullptr, log_char.data());
+ log = string(log_char.data());
}
glDeleteShader(shader);
throw GLError(String::compose("Could not compile shader (%1)", log).c_str(), -1);
@@ -437,10 +436,9 @@ GLVideoView::setup_shaders ()
glGetProgramiv(program, GL_INFO_LOG_LENGTH, &log_length);
string log;
if (log_length > 0) {
- char* log_char = new char[log_length];
- glGetProgramInfoLog(program, log_length, nullptr, log_char);
- log = string(log_char);
- delete[] log_char;
+ std::vector<char> log_char(log_length);
+ glGetProgramInfoLog(program, log_length, nullptr, log_char.data());
+ log = string(log_char.data());
}
glDeleteProgram (program);
throw GLError(String::compose("Could not link shader (%1)", log).c_str(), -1);