gst-plugins-good: monoscope: stack needs to be size+1 as we put a end-marker into it
Stefan Kost
ensonic at kemper.freedesktop.org
Wed Mar 2 00:55:28 PST 2011
Module: gst-plugins-good
Branch: master
Commit: d2ee8b979d84f0e714e502116b6fafd9f1d68d16
URL: http://cgit.freedesktop.org/gstreamer/gst-plugins-good/commit/?id=d2ee8b979d84f0e714e502116b6fafd9f1d68d16
Author: Stefan Kost <ensonic at users.sf.net>
Date: Wed Mar 2 10:56:33 2011 +0200
monoscope: stack needs to be size+1 as we put a end-marker into it
Valgrind is still complaining about one bad read, but this takes care of the
crash mentioned in the comment and in bug #564122.
---
gst/monoscope/convolve.c | 11 ++++-------
1 files changed, 4 insertions(+), 7 deletions(-)
diff --git a/gst/monoscope/convolve.c b/gst/monoscope/convolve.c
index 070baa4..584f680 100644
--- a/gst/monoscope/convolve.c
+++ b/gst/monoscope/convolve.c
@@ -90,7 +90,7 @@ struct _struct_convolve_state
double left[CONVOLVE_BIG];
double right[CONVOLVE_SMALL * 3];
double scratch[CONVOLVE_SMALL * 3];
- stack_entry stack[STACK_SIZE];
+ stack_entry stack[STACK_SIZE + 1];
};
/*
@@ -102,7 +102,7 @@ struct _struct_convolve_state
convolve_state *
convolve_init (void)
{
- return (convolve_state *) malloc (sizeof (convolve_state));
+ return (convolve_state *) calloc (1, sizeof (convolve_state));
}
/*
@@ -111,8 +111,7 @@ convolve_init (void)
void
convolve_close (convolve_state * state)
{
- if (state)
- free (state);
+ free (state);
}
static void
@@ -267,7 +266,7 @@ convolve_match (const int *lastchoice,
double *left = state->left;
double *right = state->right;
double *scratch = state->scratch;
- stack_entry *top = state->stack + STACK_SIZE - 1;
+ stack_entry *top = state->stack + (STACK_SIZE - 1);
#if 1
for (i = 0; i < 512; i++)
@@ -288,9 +287,7 @@ convolve_match (const int *lastchoice,
for (i = 0; i < 256; i++)
right[i] -= avg;
/* End-of-stack marker. */
-#if 0 /* The following line produces a CRASH, need to figure out why?!! */
top[1].b.null = scratch;
-#endif
top[1].b.main = NULL;
/* The low 256x256, of which we want the high 256 outputs. */
top->v.left = left;
More information about the gstreamer-commits
mailing list