Fix integer size and sign issues

WAV files use 32-bit sizes so casts are needed on 64-bit files systems

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6340 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Bill Somerville 2016-01-02 19:10:16 +00:00
parent 1a0cbd4d9d
commit 7b7ef610b5
1 changed files with 5 additions and 4 deletions

View File

@ -2,6 +2,7 @@
#include <cstring> #include <cstring>
#include <numeric> #include <numeric>
#include <algorithm>
#include <qendian.h> #include <qendian.h>
#include <QAudioFormat> #include <QAudioFormat>
@ -24,7 +25,7 @@ namespace
{ {
if (id) if (id)
{ {
auto len = std::min (4u, strlen (id)); auto len = std::min (size_t (4), strlen (id));
memcpy (id_.data (), id, len); memcpy (id_.data (), id, len);
memset (id_.data () + len, ' ', 4u - len); memset (id_.data () + len, ' ', 4u - len);
} }
@ -183,7 +184,7 @@ bool WavFile::read_header ()
{ {
if (!file_.seek (0)) return false; if (!file_.seek (0)) return false;
Desc outer_desc; Desc outer_desc;
auto outer_offset = file_.pos (); quint32 outer_offset = file_.pos ();
quint32 outer_size {0}; quint32 outer_size {0};
bool be {false}; bool be {false};
while (outer_offset < sizeof outer_desc + outer_desc.size_ - 1) // allow for uncounted pad while (outer_offset < sizeof outer_desc + outer_desc.size_ - 1) // allow for uncounted pad
@ -200,7 +201,7 @@ bool WavFile::read_header ()
{ {
// WAVE // WAVE
Desc wave_desc; Desc wave_desc;
auto wave_offset = file_.pos (); quint32 wave_offset = file_.pos ();
quint32 wave_size {0}; quint32 wave_size {0};
while (wave_offset < outer_offset + sizeof outer_desc + outer_size - 1) while (wave_offset < outer_offset + sizeof outer_desc + outer_size - 1)
{ {
@ -232,7 +233,7 @@ bool WavFile::read_header ()
if (!memcmp (list_type, "INFO", 4)) if (!memcmp (list_type, "INFO", 4))
{ {
Desc info_desc; Desc info_desc;
auto info_offset = file_.pos (); quint32 info_offset = file_.pos ();
quint32 info_size {0}; quint32 info_size {0};
while (info_offset < wave_offset + sizeof wave_desc + wave_size - 1) while (info_offset < wave_offset + sizeof wave_desc + wave_size - 1)
{ {