mirror of
https://github.com/TomHarte/CLK.git
synced 2024-11-29 12:50:28 +00:00
Adds a check against overrunning data.
This commit is contained in:
parent
e8bc254f3f
commit
418cd07e17
@ -406,6 +406,9 @@ void CRT::set_immediate_default_phase(float phase) {
|
||||
}
|
||||
|
||||
void CRT::output_data(int number_of_cycles, size_t number_of_samples) {
|
||||
#ifndef NDEBUG
|
||||
assert(number_of_samples <= allocated_data_length_);
|
||||
#endif
|
||||
scan_target_->end_data(number_of_samples);
|
||||
Scan scan;
|
||||
scan.type = Scan::Type::Data;
|
||||
|
@ -83,6 +83,10 @@ class CRT {
|
||||
Outputs::Display::ScanTarget::Modals scan_target_modals_;
|
||||
static const uint8_t DefaultAmplitude = 80;
|
||||
|
||||
#ifndef NDEBUG
|
||||
size_t allocated_data_length_ = 0;
|
||||
#endif
|
||||
|
||||
public:
|
||||
/*! Constructs the CRT with a specified clock rate, height and colour subcarrier frequency.
|
||||
The requested number of buffers, each with the requested number of bytes per pixel,
|
||||
@ -221,6 +225,9 @@ class CRT {
|
||||
@returns A pointer to the allocated area if room is available; @c nullptr otherwise.
|
||||
*/
|
||||
inline uint8_t *begin_data(std::size_t required_length, std::size_t required_alignment = 1) {
|
||||
#ifndef NDEBUG
|
||||
allocated_data_length_ = required_length;
|
||||
#endif
|
||||
return scan_target_->begin_data(required_length, required_alignment);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user