diff options
author | Stephen Torri <storri@users.sourceforge.net> | 2003-02-28 02:51:47 +0000 |
---|---|---|
committer | Stephen Torri <storri@users.sourceforge.net> | 2003-02-28 02:51:47 +0000 |
commit | 49327f43ca2196122a60314e67eeee929efea873 (patch) | |
tree | 1b9ce1d2b141d0e411e422df265f6d57183906e1 /src/libmad/layer3.c | |
parent | 7eb769e2d3c1abb16e53d87af5f8633967e7f6ce (diff) | |
download | xine-lib-49327f43ca2196122a60314e67eeee929efea873.tar.gz xine-lib-49327f43ca2196122a60314e67eeee929efea873.tar.bz2 |
Xine assert() replacement:
All assert() function calls, with exceptions of libdvdread and libdvdnav, have been
replaced with XINE_ASSERT. Functionally XINE_ASSERT behaves just likes its predecesor but its
adding the ability to print out a stack trace at the point where the assertion fails.
So here are a few examples.
assert (0);
This use of assert was found in a couple locations most favorably being the default case of a switch
statement. This was the only thing there. So if the switch statement was unable to find a match
it would have defaulted to this and the user and the developers would be stuck wonder who died and where.
So it has been replaced with
XINE_ASSERT(0, "We have reach this point and don't have a default case");
It may seem a bit none descriptive but there is more going on behind the scene.
In addition to checking a condition is true/false, in this case '0', the XINE_ASSERT
prints out:
<filename>:<function name>:<line number> - assertion '<assertion expression>' failed. <description>
An example of this might be:
input_dvd.c:open_plugin:1178 - assertion '0' failed. xine_malloc failed!!! You have run out of memory
XINE_ASSERT and its helper function, print_trace, are found in src/xine-utils/xineutils.h
CVS patchset: 4301
CVS date: 2003/02/28 02:51:47
Diffstat (limited to 'src/libmad/layer3.c')
-rwxr-xr-x | src/libmad/layer3.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/src/libmad/layer3.c b/src/libmad/layer3.c index b05dd4cbf..d4db46ffc 100755 --- a/src/libmad/layer3.c +++ b/src/libmad/layer3.c @@ -16,7 +16,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: layer3.c,v 1.3 2002/04/30 18:46:58 miguelfreitas Exp $ + * $Id: layer3.c,v 1.4 2003/02/28 02:51:49 storri Exp $ */ # ifdef HAVE_CONFIG_H @@ -28,16 +28,13 @@ # include <stdlib.h> # include <string.h> -# ifdef HAVE_ASSERT_H -# include <assert.h> -# endif - # ifdef HAVE_LIMITS_H # include <limits.h> # else # define CHAR_BIT 8 # endif +# include "xineutils.h" # include "fixed.h" # include "bit.h" # include "stream.h" @@ -1250,7 +1247,7 @@ enum mad_error III_huffdecode(struct mad_bitptr *ptr, mad_fixed_t xr[576], } } - assert(-bits_left <= MAD_BUFFER_GUARD * CHAR_BIT); + XINE_ASSERT(-bits_left <= (MAD_BUFFER_GUARD * CHAR_BIT), "-bits_left > (MAD_BUFFER_GUARD * CHAR_BIT"); # if 0 && defined(DEBUG) if (bits_left < 0) @@ -2433,8 +2430,8 @@ int mad_layer_III(struct mad_stream *stream, struct mad_frame *frame) *stream->main_data + stream->md_len - si.main_data_begin); if (md_len > si.main_data_begin) { - assert(stream->md_len + md_len - - si.main_data_begin <= MAD_BUFFER_MDLEN); + XINE_ASSERT((stream->md_len + md_len - + si.main_data_begin) <= MAD_BUFFER_MDLEN, "?"); memcpy(*stream->main_data + stream->md_len, mad_bit_nextbyte(&stream->ptr), |