ext/gnomevfs/gstgnomevfssink.c: fix erase signal - if any handler returns false the file will not be overwritten. If ...

Original commit message from CVS:
* ext/gnomevfs/gstgnomevfssink.c:
(_gst_boolean_allow_overwrite_accumulator),
(gst_gnomevfssink_class_init):
fix erase signal - if any handler returns false the file will not be
overwritten. If no handler is connected, the file will not be
overwritten either.
renamed signal to "allow-overwrite"
* ext/mad/gstid3tag.c: (tag_list_to_id3_tag_foreach):
free string when adding it to ID3 failed
* ext/vorbis/vorbisdec.c: (vorbis_dec_event):
unref event when done
* gst/audioconvert/gstaudioconvert.c: (_fixate_caps_to_int):
free caps
* gst/typefind/gsttypefindfunctions.c:
(mpeg_video_stream_type_find):
fix invalid read
This commit is contained in:
Benjamin Otte 2004-04-09 18:55:10 +00:00
parent 92fe387eea
commit 50d120f1ba
5 changed files with 39 additions and 22 deletions

View file

@ -1,3 +1,22 @@
2004-04-09 Benjamin Otte <otte@gnome.org>
* ext/gnomevfs/gstgnomevfssink.c:
(_gst_boolean_allow_overwrite_accumulator),
(gst_gnomevfssink_class_init):
fix erase signal - if any handler returns false the file will not be
overwritten. If no handler is connected, the file will not be
overwritten either.
renamed signal to "allow-overwrite"
* ext/mad/gstid3tag.c: (tag_list_to_id3_tag_foreach):
free string when adding it to ID3 failed
* ext/vorbis/vorbisdec.c: (vorbis_dec_event):
unref event when done
* gst/audioconvert/gstaudioconvert.c: (_fixate_caps_to_int):
free caps
* gst/typefind/gsttypefindfunctions.c:
(mpeg_video_stream_type_find):
fix invalid read
2004-04-08 David Schleef <ds@schleef.org>
* gst/ffmpegcolorspace/gstffmpegcolorspace.c:

View file

@ -157,18 +157,16 @@ gst_gnomevfssink_base_init (gpointer g_class)
}
static gboolean
_gst_boolean_did_something_accumulator (GSignalInvocationHint * ihint,
_gst_boolean_allow_overwrite_accumulator (GSignalInvocationHint * ihint,
GValue * return_accu, const GValue * handler_return, gpointer dummy)
{
gboolean did_something;
gboolean allow_overwrite;
did_something = g_value_get_boolean (handler_return);
if (did_something) {
g_value_set_boolean (return_accu, TRUE);
}
allow_overwrite = g_value_get_boolean (handler_return);
g_value_set_boolean (return_accu, allow_overwrite);
/* always continue emission */
return TRUE;
/* stop emission if signal doesn't allow overwriting */
return allow_overwrite;
}
static void
@ -193,9 +191,9 @@ gst_gnomevfssink_class_init (GstGnomeVFSSinkClass * klass)
"GnomeVFSHandle", "Handle for GnomeVFS", G_PARAM_READWRITE));
gst_gnomevfssink_signals[SIGNAL_ERASE_ASK] =
g_signal_new ("erase-ask", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GstGnomeVFSSinkClass, erase_ask),
_gst_boolean_did_something_accumulator, NULL,
g_signal_new ("allow-overwrite", G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstGnomeVFSSinkClass, erase_ask),
_gst_boolean_allow_overwrite_accumulator, NULL,
gst_marshal_BOOLEAN__POINTER, G_TYPE_BOOLEAN, 1, G_TYPE_POINTER);

View file

@ -309,6 +309,7 @@ vorbis_dec_event (GstVorbisDec * dec, GstEvent * event)
GST_ERROR_OBJECT (dec,
"failed to parse data for DISCONT event, not sending any");
}
gst_data_unref (GST_DATA (event));
#ifdef HAVE_VORBIS_SYNTHESIS_RESTART
vorbis_synthesis_restart (&dec->vd);
#endif

View file

@ -431,19 +431,17 @@ _fixate_caps_to_int (GstCaps ** caps, const gchar * field, gint value)
gboolean ret = FALSE;
guint i;
try =
gst_caps_new_simple ("audio/x-raw-int", field, GST_TYPE_INT_RANGE,
G_MININT, value - 1, NULL), gst_caps_append (try,
gst_caps_new_simple ("audio/x-raw-float", field, GST_TYPE_INT_RANGE,
G_MININT, value - 1, NULL));
try = gst_caps_new_simple ("audio/x-raw-int", field, GST_TYPE_INT_RANGE,
G_MININT, value - 1, NULL);
gst_caps_append (try, gst_caps_new_simple ("audio/x-raw-float", field,
GST_TYPE_INT_RANGE, G_MININT, value - 1, NULL));
intersection = gst_caps_intersect (*caps, try);
if (!gst_caps_is_empty (intersection)) {
gst_caps_free (try);
try =
gst_caps_new_simple ("audio/x-raw-int", field, GST_TYPE_INT_RANGE,
value, G_MAXINT, NULL), gst_caps_append (try,
gst_caps_new_simple ("audio/x-raw-float", field, GST_TYPE_INT_RANGE,
value, G_MAXINT, NULL));
try = gst_caps_new_simple ("audio/x-raw-int", field, GST_TYPE_INT_RANGE,
value, G_MAXINT, NULL);
gst_caps_append (try, gst_caps_new_simple ("audio/x-raw-float", field,
GST_TYPE_INT_RANGE, value, G_MAXINT, NULL));
gst_caps_free (intersection);
intersection = gst_caps_intersect (*caps, try);
if (!gst_caps_is_empty (intersection)) {
@ -454,6 +452,7 @@ _fixate_caps_to_int (GstCaps ** caps, const gchar * field, gint value)
gst_caps_free (intersection);
}
}
gst_caps_free (try);
for (i = 0; i < gst_caps_get_size (*caps); i++) {
GstStructure *structure = gst_caps_get_structure (*caps, i);

View file

@ -647,7 +647,7 @@ mpeg_video_stream_type_find (GstTypeFind * tf, gpointer unused)
if (skipped > GST_MPEGVID_TYPEFIND_TRY_SYNC)
break;
if (size < 4) {
if (size < 5) {
data = gst_type_find_peek (tf, skipped, GST_MPEGVID_TYPEFIND_SYNC_SIZE);
if (!data)
break;