Refactor to avoid nonnull checks on "this" pointer.
G++ 6.0 asserts that the "this" pointer is non-null for member functions. Refactor methods that check if "this" is non-null to resolve this. winsup/cygwin/ChangeLog: external.cc (cygwin_internal): Check for a null pinfo before calling cmdline. fhandler_dsp.cc (Audio::blockSize): Make static. fhandler_dsp.cc (Audio_in): add default_buf_info. fhandler_dsp.cc (Audio_out): Ditto. fhandler_dsp.cc (Audio_out::buf_info): Refactor method to call default_buf_info if dev_ is null. fhandler_dsp.cc (Audio_in::buf_info): Ditto. fhandler_dsp.cc (fhandler_dev_dsp::_ioctl): Call Audio_out::default_buf_info if audio_out_ is null. fhandler_dsp.cc (fhandler_dev_dsp::_ioctl): Call Audio_in::default_buf_info if audio_in_ is null. fhandler_process.cc (format_process_fd): Check if pinfo is null. fhandler_process.cc (format_process_root): Ditto. fhandler_process.cc (format_process_cwd): Ditto. fhandler_process.cc (format_process_cmdline): Ditto. signal.cc (tty_min::kill_pgrp): Ditto. signal.cc (_pinfo::kill0): Ditto. sigproc.cc (pid_exists): Ditto. sigproc.cc (remove_proc): Ditto. times.cc (clock_gettime): Ditto. times.cc (clock_getcpuclockid): Ditto. path.cc (cwdstuff::override_win32_cwd): Check if old_cwd is null. path.cc (fcwd_access_t::Free): Factor null check of "this" out to caller(s). pinfo.cc (_pinfo::exists): Ditto. pinfo.cc (_pinfo::fd): Ditto. pinfo.cc (_pinfo::fds): Ditto. pinfo.cc (_pinfo::root): Ditto. pinfo.cc (_pinfo::cwd): Ditto. pinfo.cc (_pinfo::cmdline): Ditto. signal.cc (_pinfo::kill): Ditto. pinfo.cc (_pinfo::commune_request): remove non-null check on "this", as this method is only called from pinfo.cc after null checks pinfo.cc (_pinfo::pipe_fhandler): remove non-null check on "this", as this method is only called from pipe.cc (fhandler_pipe::open) after a null check. Signed-off-by: Peter Foley <pefoley2@pefoley.com>
This commit is contained in:
committed by
Corinna Vinschen
parent
e7e6119241
commit
0008bdea02
@ -65,7 +65,7 @@ class fhandler_dev_dsp::Audio
|
||||
void convert_S16LE_S16BE (unsigned char *buffer, int size_bytes);
|
||||
void fillFormat (WAVEFORMATEX * format,
|
||||
int rate, int bits, int channels);
|
||||
unsigned blockSize (int rate, int bits, int channels);
|
||||
static unsigned blockSize (int rate, int bits, int channels);
|
||||
void (fhandler_dev_dsp::Audio::*convert_)
|
||||
(unsigned char *buffer, int size_bytes);
|
||||
|
||||
@ -117,6 +117,7 @@ class fhandler_dev_dsp::Audio_out: public Audio
|
||||
void stop (bool immediately = false);
|
||||
int write (const char *pSampleData, int nBytes);
|
||||
void buf_info (audio_buf_info *p, int rate, int bits, int channels);
|
||||
static void default_buf_info (audio_buf_info *p, int rate, int bits, int channels);
|
||||
void callback_sampledone (WAVEHDR *pHdr);
|
||||
bool parsewav (const char *&pData, int &nBytes,
|
||||
int rate, int bits, int channels);
|
||||
@ -151,6 +152,7 @@ public:
|
||||
void stop ();
|
||||
bool read (char *pSampleData, int &nBytes);
|
||||
void buf_info (audio_buf_info *p, int rate, int bits, int channels);
|
||||
static void default_buf_info (audio_buf_info *p, int rate, int bits, int channels);
|
||||
void callback_blockfull (WAVEHDR *pHdr);
|
||||
|
||||
private:
|
||||
@ -501,11 +503,11 @@ void
|
||||
fhandler_dev_dsp::Audio_out::buf_info (audio_buf_info *p,
|
||||
int rate, int bits, int channels)
|
||||
{
|
||||
p->fragstotal = MAX_BLOCKS;
|
||||
if (this && dev_)
|
||||
if (dev_)
|
||||
{
|
||||
/* If the device is running we use the internal values,
|
||||
possibly set from the wave file. */
|
||||
p->fragstotal = MAX_BLOCKS;
|
||||
p->fragsize = blockSize (freq_, bits_, channels_);
|
||||
p->fragments = Qisr2app_->query ();
|
||||
if (pHdr_ != NULL)
|
||||
@ -516,10 +518,17 @@ fhandler_dev_dsp::Audio_out::buf_info (audio_buf_info *p,
|
||||
}
|
||||
else
|
||||
{
|
||||
default_buf_info(p, rate, bits, channels);
|
||||
}
|
||||
}
|
||||
|
||||
void fhandler_dev_dsp::Audio_out::default_buf_info (audio_buf_info *p,
|
||||
int rate, int bits, int channels)
|
||||
{
|
||||
p->fragstotal = MAX_BLOCKS;
|
||||
p->fragsize = blockSize (rate, bits, channels);
|
||||
p->fragments = MAX_BLOCKS;
|
||||
p->bytes = p->fragsize * p->fragments;
|
||||
}
|
||||
}
|
||||
|
||||
/* This is called on an interupt so use locking.. Note Qisr2app_
|
||||
@ -953,14 +962,23 @@ fhandler_dev_dsp::Audio_in::waitfordata ()
|
||||
return true;
|
||||
}
|
||||
|
||||
void fhandler_dev_dsp::Audio_in::default_buf_info (audio_buf_info *p,
|
||||
int rate, int bits, int channels)
|
||||
{
|
||||
p->fragstotal = MAX_BLOCKS;
|
||||
p->fragsize = blockSize (rate, bits, channels);
|
||||
p->fragments = 0;
|
||||
p->bytes = 0;
|
||||
}
|
||||
|
||||
void
|
||||
fhandler_dev_dsp::Audio_in::buf_info (audio_buf_info *p,
|
||||
int rate, int bits, int channels)
|
||||
{
|
||||
p->fragstotal = MAX_BLOCKS;
|
||||
p->fragsize = blockSize (rate, bits, channels);
|
||||
if (this && dev_)
|
||||
if (dev_)
|
||||
{
|
||||
p->fragstotal = MAX_BLOCKS;
|
||||
p->fragsize = blockSize (rate, bits, channels);
|
||||
p->fragments = Qisr2app_->query ();
|
||||
if (pHdr_ != NULL)
|
||||
p->bytes = pHdr_->dwBytesRecorded - bufferIndex_
|
||||
@ -970,8 +988,7 @@ fhandler_dev_dsp::Audio_in::buf_info (audio_buf_info *p,
|
||||
}
|
||||
else
|
||||
{
|
||||
p->fragments = 0;
|
||||
p->bytes = 0;
|
||||
default_buf_info(p, rate, bits, channels);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1345,9 +1362,13 @@ fhandler_dev_dsp::_ioctl (unsigned int cmd, void *buf)
|
||||
return -1;
|
||||
}
|
||||
audio_buf_info *p = (audio_buf_info *) buf;
|
||||
audio_out_->buf_info (p, audiofreq_, audiobits_, audiochannels_);
|
||||
debug_printf ("buf=%p frags=%d fragsize=%d bytes=%d",
|
||||
buf, p->fragments, p->fragsize, p->bytes);
|
||||
if (audio_out_) {
|
||||
audio_out_->buf_info (p, audiofreq_, audiobits_, audiochannels_);
|
||||
} else {
|
||||
Audio_out::default_buf_info(p, audiofreq_, audiobits_, audiochannels_);
|
||||
}
|
||||
debug_printf ("buf=%p frags=%d fragsize=%d bytes=%d",
|
||||
buf, p->fragments, p->fragsize, p->bytes);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1359,9 +1380,13 @@ fhandler_dev_dsp::_ioctl (unsigned int cmd, void *buf)
|
||||
return -1;
|
||||
}
|
||||
audio_buf_info *p = (audio_buf_info *) buf;
|
||||
audio_in_->buf_info (p, audiofreq_, audiobits_, audiochannels_);
|
||||
debug_printf ("buf=%p frags=%d fragsize=%d bytes=%d",
|
||||
buf, p->fragments, p->fragsize, p->bytes);
|
||||
if (audio_in_) {
|
||||
audio_in_->buf_info (p, audiofreq_, audiobits_, audiochannels_);
|
||||
} else {
|
||||
Audio_in::default_buf_info(p, audiofreq_, audiobits_, audiochannels_);
|
||||
}
|
||||
debug_printf ("buf=%p frags=%d fragsize=%d bytes=%d",
|
||||
buf, p->fragments, p->fragsize, p->bytes);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user