diff options
| author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2016-11-17 15:30:32 (GMT) |
|---|---|---|
| committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2016-11-17 15:30:32 (GMT) |
| commit | 1be35f340f98dc2d8ff29d5d5c1fc4709f424fc8 (patch) | |
| tree | 1f924b02e7e59fb0689e28bedd2d654a3f77cc02 /generic/tclTestObj.c | |
| parent | ca471eb7483c0847ccdd54d653511fd06ebef7df (diff) | |
| download | tcl-1be35f340f98dc2d8ff29d5d5c1fc4709f424fc8.zip tcl-1be35f340f98dc2d8ff29d5d5c1fc4709f424fc8.tar.gz tcl-1be35f340f98dc2d8ff29d5d5c1fc4709f424fc8.tar.bz2 | |
Restore bn_mp_radix_size.c to exact copy of libtommath-1.0 version: Since the radix_size of "9" should return 2, not 3. Add test-case to prove that.
Diffstat (limited to 'generic/tclTestObj.c')
| -rw-r--r-- | generic/tclTestObj.c | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/generic/tclTestObj.c b/generic/tclTestObj.c index 1cbe67a..06f8e5f 100644 --- a/generic/tclTestObj.c +++ b/generic/tclTestObj.c @@ -152,10 +152,11 @@ TestbignumobjCmd( Tcl_Obj *const objv[]) /* Argument vector */ { const char *const subcmds[] = { - "set", "get", "mult10", "div10", "iseven", NULL + "set", "get", "mult10", "div10", "iseven", "radixsize", NULL }; enum options { - BIGNUM_SET, BIGNUM_GET, BIGNUM_MULT10, BIGNUM_DIV10, BIGNUM_ISEVEN + BIGNUM_SET, BIGNUM_GET, BIGNUM_MULT10, BIGNUM_DIV10, BIGNUM_ISEVEN, + BIGNUM_RADIXSIZE }; int index, varIndex; const char *string; @@ -295,6 +296,29 @@ TestbignumobjCmd( } mp_clear(&bignumValue); break; + + case BIGNUM_RADIXSIZE: + if (objc != 3) { + Tcl_WrongNumArgs(interp, 2, objv, "varIndex"); + return TCL_ERROR; + } + if (CheckIfVarUnset(interp, varPtr,varIndex)) { + return TCL_ERROR; + } + if (Tcl_GetBignumFromObj(interp, varPtr[varIndex], + &bignumValue) != TCL_OK) { + return TCL_ERROR; + } + if (mp_radix_size(&bignumValue, 10, &index) != MP_OKAY) { + return TCL_ERROR; + } + if (!Tcl_IsShared(varPtr[varIndex])) { + Tcl_SetIntObj(varPtr[varIndex], index); + } else { + SetVarToObj(varPtr, varIndex, Tcl_NewIntObj(index)); + } + mp_clear(&bignumValue); + break; } Tcl_SetObjResult(interp, varPtr[varIndex]); |
