El 05/05/12 21:04, Eric Wong escribió: > Cristian Rodríguez<[email protected]> wrote: >> +#if defined(HAVE_OPENSSL) >> + /* decoder->private_->computed_md5sum is NULL when >> decoder->private_->do_md5_checking == false >> + * that causes assertion failure crash in openSSL. >> + */ >> + if(decoder->private_->do_md5_checking) { >> + md5_failed = (EVP_DigestFinal_ex(&decoder->private_->md5context, >> decoder->private_->computed_md5sum, NULL) == 0); >> + } >> +#else >> >> FLAC__MD5Final(decoder->private_->computed_md5sum,&decoder->private_->md5context); >> - >> +#endif > > Can you do this without sprinkling #ifdefs all over the place? > > Mixing #ifdefs and normal C control structures make code hard to > read/maintain. This is *especially* true for folks who aren't regular > contributors to flac, myself included. > > I would define workalike macros/no-op functions instead and hide > OpenSSL-related functionality behind them.
Well, there are reasons why I did it this way.. Initially I though about your suggested approach... With this new code - The format can be easily extended to support other digests algorithms, (i.e shaXXX that nowdays is implemented with hardware support) openssl is everywhere including windows. - The original code follows the traditional old-style convention of init() update() final() for every operation, this new version init() cleanup() only *once* per encoder/decoder "instance" reducing the number of function calls and openssl reuses the allocated resources... _______________________________________________ flac-dev mailing list [email protected] http://lists.xiph.org/mailman/listinfo/flac-dev
