Edit

kc3-lang/libtommath/bn_mp_init_multi.c

Branch :

  • Show log

    Commit

  • Author : Francois Perrad
    Date : 2019-05-19 17:16:13
    Hash : 8b2daf78
    Message : always use varname err with mp_err

  • bn_mp_init_multi.c
  • #include "tommath_private.h"
    #ifdef BN_MP_INIT_MULTI_C
    /* LibTomMath, multiple-precision integer library -- Tom St Denis */
    /* SPDX-License-Identifier: Unlicense */
    
    #include <stdarg.h>
    
    mp_err mp_init_multi(mp_int *mp, ...)
    {
       mp_err err = MP_OKAY;      /* Assume ok until proven otherwise */
       int n = 0;                 /* Number of ok inits */
       mp_int *cur_arg = mp;
       va_list args;
    
       va_start(args, mp);        /* init args to next argument from caller */
       while (cur_arg != NULL) {
          if (mp_init(cur_arg) != MP_OKAY) {
             /* Oops - error! Back-track and mp_clear what we already
                succeeded in init-ing, then return error.
             */
             va_list clean_args;
    
             /* now start cleaning up */
             cur_arg = mp;
             va_start(clean_args, mp);
             while (n-- != 0) {
                mp_clear(cur_arg);
                cur_arg = va_arg(clean_args, mp_int *);
             }
             va_end(clean_args);
             err = MP_MEM;
             break;
          }
          n++;
          cur_arg = va_arg(args, mp_int *);
       }
       va_end(args);
       return err;                /* Assumed ok, if error flagged above. */
    }
    
    #endif