sexp: Improve argument checking of sexp parser.
[libgcrypt.git] / mpi / mpi-add.c
index 56f5de0..53f476e 100644 (file)
@@ -1,5 +1,5 @@
 /* mpi-add.c  -  MPI functions
- * Copyright (C) 1994, 1996, 1998, 2001, 2002 Free Software Foundation, Inc.
+ * Copyright (C) 1994, 1996, 1998, 2001, 2002, 2003 Free Software Foundation, Inc.
  *
  * This file is part of Libgcrypt.
  *
@@ -36,7 +36,7 @@
  * result in W. U and V may be the same.
  */
 void
-gcry_mpi_add_ui(MPI w, MPI u, unsigned long v )
+_gcry_mpi_add_ui (gcry_mpi_t w, gcry_mpi_t u, unsigned long v )
 {
     mpi_ptr_t wp, up;
     mpi_size_t usize, wsize;
@@ -85,7 +85,7 @@ gcry_mpi_add_ui(MPI w, MPI u, unsigned long v )
 
 
 void
-gcry_mpi_add(MPI w, MPI u, MPI v)
+_gcry_mpi_add(gcry_mpi_t w, gcry_mpi_t u, gcry_mpi_t v)
 {
     mpi_ptr_t wp, up, vp;
     mpi_size_t usize, vsize, wsize;
@@ -162,7 +162,7 @@ gcry_mpi_add(MPI w, MPI u, MPI v)
  * result in W.
  */
 void
-gcry_mpi_sub_ui(MPI w, MPI u, unsigned long v )
+_gcry_mpi_sub_ui(gcry_mpi_t w, gcry_mpi_t u, unsigned long v )
 {
     mpi_ptr_t wp, up;
     mpi_size_t usize, wsize;
@@ -211,34 +211,25 @@ gcry_mpi_sub_ui(MPI w, MPI u, unsigned long v )
 }
 
 void
-gcry_mpi_sub(MPI w, MPI u, MPI v)
+_gcry_mpi_sub(gcry_mpi_t w, gcry_mpi_t u, gcry_mpi_t v)
 {
-    if( w == v ) {
-       MPI vv = mpi_copy(v);
-       vv->sign = !vv->sign;
-       gcry_mpi_add( w, u, vv );
-       mpi_free(vv);
-    }
-    else {
-       /* fixme: this is not thread-save (we temp. modify v) */
-       v->sign = !v->sign;
-       gcry_mpi_add( w, u, v );
-       v->sign = !v->sign;
-    }
+  gcry_mpi_t vv = mpi_copy (v);
+  vv->sign = ! vv->sign;
+  mpi_add (w, u, vv);
+  mpi_free (vv);
 }
 
 
 void
-gcry_mpi_addm( MPI w, MPI u, MPI v, MPI m)
+_gcry_mpi_addm( gcry_mpi_t w, gcry_mpi_t u, gcry_mpi_t v, gcry_mpi_t m)
 {
-    gcry_mpi_add(w, u, v);
-    _gcry_mpi_fdiv_r( w, w, m );
+  mpi_add (w, u, v);
+  mpi_mod (w, w, m);
 }
 
 void
-gcry_mpi_subm( MPI w, MPI u, MPI v, MPI m)
+_gcry_mpi_subm( gcry_mpi_t w, gcry_mpi_t u, gcry_mpi_t v, gcry_mpi_t m)
 {
-    gcry_mpi_sub(w, u, v);
-    _gcry_mpi_fdiv_r( w, w, m );
+  mpi_sub (w, u, v);
+  mpi_mod (w, w, m);
 }
-