aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorneonloop2021-09-08 17:31:36 +0000
committerneonloop2021-09-08 17:31:36 +0000
commit2b6772fca188aeb94f3eb9e2511f65c0fcbe4802 (patch)
tree0e22ffd0b4b6ffddf9f4f21ec09f2d046097b403
parentd1bf155304d5643218cf70e58d8fb5191536fb9e (diff)
downloadpicoarch-2b6772fca188aeb94f3eb9e2511f65c0fcbe4802.tar.gz
picoarch-2b6772fca188aeb94f3eb9e2511f65c0fcbe4802.tar.bz2
picoarch-2b6772fca188aeb94f3eb9e2511f65c0fcbe4802.zip
Avoids possible divide by zeros
-rw-r--r--plat_sdl.c5
-rw-r--r--scale.c12
2 files changed, 14 insertions, 3 deletions
diff --git a/plat_sdl.c b/plat_sdl.c
index 76be077..c7c6050 100644
--- a/plat_sdl.c
+++ b/plat_sdl.c
@@ -360,7 +360,10 @@ void plat_sound_write(const struct audio_frame *data, int frames)
void plat_sound_resize_buffer(void) {
size_t buf_size;
- audio.buf_len = current_audio_buffer_size * audio.in_sample_rate / frame_rate;
+ audio.buf_len = frame_rate > 0
+ ? current_audio_buffer_size * audio.in_sample_rate / frame_rate
+ : 2;
+
buf_size = audio.buf_len * sizeof(struct audio_frame);
audio.buf = realloc(audio.buf, buf_size);
diff --git a/scale.c b/scale.c
index 3c6265e..99d0189 100644
--- a/scale.c
+++ b/scale.c
@@ -89,6 +89,8 @@ static inline int gcd(int a, int b) {
return b ? gcd(b, a % b) : a;
}
+static void scale_null(unsigned w, unsigned h, size_t pitch, const void *src, void *dst) {}
+
static void scale_memcpy(unsigned w, unsigned h, size_t pitch, const void *src, void *dst) {
dst += dst_offs;
memcpy(dst, src, h * pitch);
@@ -391,8 +393,14 @@ static void scale_sharp_256xXXX_320xXXX(unsigned w, unsigned h, size_t pitch, co
}
static void scale_select_scaler(unsigned w, unsigned h, size_t pitch) {
- double current_aspect_ratio = aspect_ratio > 0 ? aspect_ratio : ((double)w / (double)h);
- if (w == 0 || h == 0 || pitch == 0) return;
+ double current_aspect_ratio;
+
+ if (w == 0 || h == 0 || pitch == 0) {
+ scaler = scale_null;
+ return;
+ };
+
+ current_aspect_ratio = aspect_ratio > 0 ? aspect_ratio : ((double)w / (double)h);
/* mame2000 sets resolutions / aspect ratio without notifying
* of changes, new should always override old */