[FFmpeg-cvslog] r25278 - in trunk: ffmpeg.c libavutil/Makefile libavutil/assert.h libavutil/avutil.h libavutil/rational.c
Måns Rullgård
mans
Fri Oct 1 01:33:24 CEST 2010
michael <subversion at mplayerhq.hu> writes:
> Author: michael
> Date: Thu Sep 30 23:57:31 2010
> New Revision: 25278
>
> Log:
> av_assert() system.
> With this the developer can now choose if he wants an assert always enabled or at which
> compile time assert level. This can thus replace the #define NDEBUG hacks
>
> Modified: trunk/libavutil/Makefile
> ==============================================================================
> --- trunk/libavutil/Makefile Thu Sep 30 22:40:10 2010 (r25277)
> +++ trunk/libavutil/Makefile Thu Sep 30 23:57:31 2010 (r25278)
> @@ -3,6 +3,7 @@ include $(SUBDIR)../config.mak
> NAME = avutil
>
> HEADERS = adler32.h \
> + assert.h \
> attributes.h \
> avstring.h \
> avutil.h \
I would much appreciate if you posted public headers (at the very
least) for review before committing. You require this of others, so
please abide by the rule yourself.
> +#ifndef AVUTIL_ASSERT_H
> +#define AVUTIL_ASSERT_H
> +
> +#include "avutil.h"
> +#include "log.h"
Missing #include <stdlib.h>
> +/**
> + * assert() equivalent, that is always enabled.
> + */
> +#define av_assert0(cond) do {if(!(cond)) { av_log(NULL, AV_LOG_FATAL, "Assertion %s failed at %s:%d\n", AV_STRINGIFY(cond), __FILE__, __LINE__); abort(); }}while(0)
Please format this ridiculously long line in a sane way.
> +/**
> + * assert() equivalent, that does not lie in speed critical code.
What is that supposed to mean?
> + * These asserts() thus can be enabled without fearing speedloss.
> + */
> +#if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 0
> +#define av_assert1(cond) av_assert_always(cond)
> +#else
> +#define av_assert1(cond) ((void)0)
WTF?
> +#endif
> +
> +
> +/**
> + * assert() equivalent, that does lie in speed critical code.
What is that supposed to mean?
> + */
> +#if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 1
> +#define av_assert2(cond) av_assert_always(cond)
> +#else
> +#define av_assert2(cond) ((void)0)
> +#endif
Maybe more meaningful names for these macros would be a good idea.
You couldn't even get them right yourself in this very commit. You
also obviously did not test it. I find that sloppy to the point of
being unacceptable. Doubly so for someone who already considers
himself exempt from the usual review process.
> -#include <assert.h>
> +#include "assert.h"
Using the same name as a standard header is practically guaranteed to
cause confusion and mysterious bugs.
--
M?ns Rullg?rd
mans at mansr.com
More information about the ffmpeg-cvslog
mailing list