Unified · Split
| @@ -59,13 +59,12 @@ IPint_iptob64z(void *fp) · 58 unmodified lines | |||
| 59 | char buf[MaxBigBytes]; /* TO DO: should allocate these */ | 59 | char buf[MaxBigBytes]; /* TO DO: should allocate these */ |
| 60 | uchar *p; | 60 | uchar *p; |
| 61 | int n, o; | 61 | int n, o; |
| 62 | void *v; | ||
| 62 | 63 | ||
| 63 | f = fp; | 64 | f = fp; |
| 64 | destroy(*f->ret); | 65 | v = *f->ret; |
| 65 | *f->ret = H; | 66 | *f->ret = H; |
| 66 | 67 | destroy(v); | |
| 67 | if(f->i == H) | ||
| 68 | error(exNilref); | ||
| 69 | 68 | ||
| 70 | b = MP(f->i); | 69 | b = MP(f->i); |
| 71 | n = (b->top+1)*Dbytes; | 70 | n = (b->top+1)*Dbytes; |
| @@ -94,13 +93,12 @@ IPint_iptob64(void *fp) · 22 unmodified lines | |||
| 94 | { | 93 | { |
| 95 | F_IPint_iptob64 *f; | 94 | F_IPint_iptob64 *f; |
| 96 | char buf[MaxBigBytes]; | 95 | char buf[MaxBigBytes]; |
| 96 | void *v; | ||
| 97 | 97 | ||
| 98 | f = fp; | 98 | f = fp; |
| 99 | destroy(*f->ret); | 99 | v = *f->ret; |
| 100 | *f->ret = H; | 100 | *f->ret = H; |
| 101 | 101 | destroy(v); | |
| 102 | if(f->i == H) | ||
| 103 | error(exNilref); | ||
| 104 | 102 | ||
| 105 | mptoa(MP(f->i), 64, buf, sizeof(buf)); | 103 | mptoa(MP(f->i), 64, buf, sizeof(buf)); |
| 106 | retstr(buf, f->ret); | 104 | retstr(buf, f->ret); |
| @@ -111,13 +109,12 @@ IPint_iptobytes(void *fp) · 4 unmodified lines | |||
| 111 | { | 109 | { |
| 112 | F_IPint_iptobytes *f; | 110 | F_IPint_iptobytes *f; |
| 113 | uchar buf[MaxBigBytes]; | 111 | uchar buf[MaxBigBytes]; |
| 112 | void *v; | ||
| 114 | 113 | ||
| 115 | f = fp; | 114 | f = fp; |
| 116 | destroy(*f->ret); | 115 | v = *f->ret; |
| 117 | *f->ret = H; | 116 | *f->ret = H; |
| 118 | 117 | destroy(v); | |
| 119 | if(f->i == H) | ||
| 120 | error(exNilref); | ||
| 121 | 118 | ||
| 122 | /* TO DO: two's complement or have ipmagtobe? */ | 119 | /* TO DO: two's complement or have ipmagtobe? */ |
| 123 | *f->ret = mem2array(buf, mptobe(MP(f->i), buf, sizeof(buf), nil)); /* for now we'll ignore sign */ | 120 | *f->ret = mem2array(buf, mptobe(MP(f->i), buf, sizeof(buf), nil)); /* for now we'll ignore sign */ |
| @@ -128,13 +125,12 @@ IPint_iptobebytes(void *fp) · 4 unmodified lines | |||
| 128 | { | 125 | { |
| 129 | F_IPint_iptobebytes *f; | 126 | F_IPint_iptobebytes *f; |
| 130 | uchar buf[MaxBigBytes]; | 127 | uchar buf[MaxBigBytes]; |
| 128 | void *v; | ||
| 131 | 129 | ||
| 132 | f = fp; | 130 | f = fp; |
| 133 | destroy(*f->ret); | 131 | v = *f->ret; |
| 134 | *f->ret = H; | 132 | *f->ret = H; |
| 135 | 133 | destroy(v); | |
| 136 | if(f->i == H) | ||
| 137 | error(exNilref); | ||
| 138 | 134 | ||
| 139 | *f->ret = mem2array(buf, mptobe(MP(f->i), buf, sizeof(buf), nil)); | 135 | *f->ret = mem2array(buf, mptobe(MP(f->i), buf, sizeof(buf), nil)); |
| 140 | } | 136 | } |
| @@ -144,13 +140,12 @@ IPint_iptostr(void *fp) · 3 unmodified lines | |||
| 144 | { | 140 | { |
| 145 | F_IPint_iptostr *f; | 141 | F_IPint_iptostr *f; |
| 146 | char buf[MaxBigBytes]; | 142 | char buf[MaxBigBytes]; |
| 143 | void *v; | ||
| 147 | 144 | ||
| 148 | f = fp; | 145 | f = fp; |
| 149 | destroy(*f->ret); | 146 | v = *f->ret; |
| 150 | *f->ret = H; | 147 | *f->ret = H; |
| 151 | 148 | destroy(v); | |
| 152 | if(f->i == H) | ||
| 153 | error(exNilref); | ||
| 154 | 149 | ||
| 155 | mptoa(MP(f->i), f->base, buf, sizeof(buf)); | 150 | mptoa(MP(f->i), f->base, buf, sizeof(buf)); |
| 156 | retstr(buf, f->ret); | 151 | retstr(buf, f->ret); |
| @@ -179,10 +174,12 @@ void · 22 unmodified lines | |||
| 179 | IPint_b64toip(void *fp) | 174 | IPint_b64toip(void *fp) |
| 180 | { | 175 | { |
| 181 | F_IPint_b64toip *f; | 176 | F_IPint_b64toip *f; |
| 177 | void *v; | ||
| 182 | 178 | ||
| 183 | f = fp; | 179 | f = fp; |
| 184 | destroy(*f->ret); | 180 | v = *f->ret; |
| 185 | *f->ret = H; | 181 | *f->ret = H; |
| 182 | destroy(v); | ||
| 186 | 183 | ||
| 187 | *f->ret = strtoipint(f->str, 64); | 184 | *f->ret = strtoipint(f->str, 64); |
| 188 | } | 185 | } |
| @@ -192,10 +189,12 @@ IPint_bytestoip(void *fp) · 3 unmodified lines | |||
| 192 | { | 189 | { |
| 193 | F_IPint_bytestoip *f; | 190 | F_IPint_bytestoip *f; |
| 194 | mpint *b; | 191 | mpint *b; |
| 192 | void *v; | ||
| 195 | 193 | ||
| 196 | f = fp; | 194 | f = fp; |
| 197 | destroy(*f->ret); | 195 | v = *f->ret; |
| 198 | *f->ret = H; | 196 | *f->ret = H; |
| 197 | destroy(v); | ||
| 199 | 198 | ||
| 200 | if(f->buf == H) | 199 | if(f->buf == H) |
| 201 | error(exNilref); | 200 | error(exNilref); |
| @@ -209,10 +208,12 @@ IPint_bebytestoip(void *fp) · 7 unmodified lines | |||
| 209 | { | 208 | { |
| 210 | F_IPint_bebytestoip *f; | 209 | F_IPint_bebytestoip *f; |
| 211 | mpint *b; | 210 | mpint *b; |
| 211 | void *v; | ||
| 212 | 212 | ||
| 213 | f = fp; | 213 | f = fp; |
| 214 | destroy(*f->ret); | 214 | v = *f->ret; |
| 215 | *f->ret = H; | 215 | *f->ret = H; |
| 216 | destroy(v); | ||
| 216 | 217 | ||
| 217 | if(f->mag == H) | 218 | if(f->mag == H) |
| 218 | error(exNilref); | 219 | error(exNilref); |
| @@ -225,10 +226,12 @@ void · 6 unmodified lines | |||
| 225 | IPint_strtoip(void *fp) | 226 | IPint_strtoip(void *fp) |
| 226 | { | 227 | { |
| 227 | F_IPint_strtoip *f; | 228 | F_IPint_strtoip *f; |
| 229 | void *v; | ||
| 228 | 230 | ||
| 229 | f = fp; | 231 | f = fp; |
| 230 | destroy(*f->ret); | 232 | v = *f->ret; |
| 231 | *f->ret = H; | 233 | *f->ret = H; |
| 234 | destroy(v); | ||
| 232 | 235 | ||
| 233 | *f->ret = strtoipint(f->str, f->base); | 236 | *f->ret = strtoipint(f->str, f->base); |
| 234 | } | 237 | } |
| @@ -275,10 +278,12 @@ void · 40 unmodified lines | |||
| 275 | IPint_inttoip(void *fp) | 278 | IPint_inttoip(void *fp) |
| 276 | { | 279 | { |
| 277 | F_IPint_inttoip *f; | 280 | F_IPint_inttoip *f; |
| 281 | void *v; | ||
| 278 | 282 | ||
| 279 | f = fp; | 283 | f = fp; |
| 280 | destroy(*f->ret); | 284 | v = *f->ret; |
| 281 | *f->ret = H; | 285 | *f->ret = H; |
| 286 | destroy(v); | ||
| 282 | 287 | ||
| 283 | *f->ret = newIPint(itomp(f->i, nil)); | 288 | *f->ret = newIPint(itomp(f->i, nil)); |
| 284 | } | 289 | } |
| @@ -300,21 +305,23 @@ void · 15 unmodified lines | |||
| 300 | IPint_expmod(void *fp) | 305 | IPint_expmod(void *fp) |
| 301 | { | 306 | { |
| 302 | F_IPint_expmod *f; | 307 | F_IPint_expmod *f; |
| 303 | mpint *ret, *mod; | 308 | mpint *ret, *mod, *base, *exp; |
| 309 | void *v; | ||
| 304 | 310 | ||
| 305 | f = fp; | 311 | f = fp; |
| 306 | destroy(*f->ret); | 312 | v = *f->ret; |
| 307 | *f->ret = H; | 313 | *f->ret = H; |
| 314 | destroy(v); | ||
| 308 | 315 | ||
| 309 | if(f->base == H || f->exp == H) | 316 | base = MP(f->base); |
| 310 | error(exNilref); | 317 | exp = MP(f->exp); |
| 311 | |||
| 312 | mod = nil; | ||
| 313 | if(f->mod != H) | 318 | if(f->mod != H) |
| 314 | mod = MP(f->mod); | 319 | mod = MP(f->mod); |
| 320 | else | ||
| 321 | mod = nil; | ||
| 315 | ret = mpnew(0); | 322 | ret = mpnew(0); |
| 316 | if(ret != nil) | 323 | if(ret != nil) |
| 317 | mpexp(MP(f->base), MP(f->exp), mod, ret); | 324 | mpexp(base, exp, mod, ret); |
| 318 | *f->ret = newIPint(ret); | 325 | *f->ret = newIPint(ret); |
| 319 | } | 326 | } |
| 320 | 327 | ||
| @@ -324,10 +331,12 @@ IPint_invert(void *fp) · 3 unmodified lines | |||
| 324 | { | 331 | { |
| 325 | F_IPint_invert *f; | 332 | F_IPint_invert *f; |
| 326 | mpint *ret; | 333 | mpint *ret; |
| 334 | void *v; | ||
| 327 | 335 | ||
| 328 | f = fp; | 336 | f = fp; |
| 329 | destroy(*f->ret); | 337 | v = *f->ret; |
| 330 | *f->ret = H; | 338 | *f->ret = H; |
| 339 | destroy(v); | ||
| 331 | 340 | ||
| 332 | ret = mpnew(0); | 341 | ret = mpnew(0); |
| 333 | if(ret != nil) | 342 | if(ret != nil) |
| @@ -341,16 +350,15 @@ IPint_add(void *fp) · 7 unmodified lines | |||
| 341 | { | 350 | { |
| 342 | F_IPint_add *f; | 351 | F_IPint_add *f; |
| 343 | mpint *i1, *i2, *ret; | 352 | mpint *i1, *i2, *ret; |
| 353 | void *v; | ||
| 344 | 354 | ||
| 345 | f = fp; | 355 | f = fp; |
| 346 | destroy(*f->ret); | 356 | v = *f->ret; |
| 347 | *f->ret = H; | 357 | *f->ret = H; |
| 358 | destroy(v); | ||
| 348 | 359 | ||
| 349 | if(f->i1 == H || f->i2 == H) | 360 | i1 = MP(f->i1); |
| 350 | error(exNilref); | 361 | i2 = MP(f->i2); |
| 351 | |||
| 352 | i1 = ((IPint*)f->i1)->b; | ||
| 353 | i2 = ((IPint*)f->i2)->b; | ||
| 354 | ret = mpnew(0); | 362 | ret = mpnew(0); |
| 355 | if(ret != nil) | 363 | if(ret != nil) |
| 356 | mpadd(i1, i2, ret); | 364 | mpadd(i1, i2, ret); |
| @@ -362,16 +370,15 @@ IPint_sub(void *fp) · 5 unmodified lines | |||
| 362 | { | 370 | { |
| 363 | F_IPint_sub *f; | 371 | F_IPint_sub *f; |
| 364 | mpint *i1, *i2, *ret; | 372 | mpint *i1, *i2, *ret; |
| 373 | void *v; | ||
| 365 | 374 | ||
| 366 | f = fp; | 375 | f = fp; |
| 367 | destroy(*f->ret); | 376 | v = *f->ret; |
| 368 | *f->ret = H; | 377 | *f->ret = H; |
| 378 | destroy(v); | ||
| 369 | 379 | ||
| 370 | if(f->i1 == H || f->i2 == H) | 380 | i1 = MP(f->i1); |
| 371 | error(exNilref); | 381 | i2 = MP(f->i2); |
| 372 | |||
| 373 | i1 = ((IPint*)f->i1)->b; | ||
| 374 | i2 = ((IPint*)f->i2)->b; | ||
| 375 | ret = mpnew(0); | 382 | ret = mpnew(0); |
| 376 | if(ret != nil) | 383 | if(ret != nil) |
| 377 | mpsub(i1, i2, ret); | 384 | mpsub(i1, i2, ret); |
| @@ -383,16 +390,15 @@ IPint_mul(void *fp) · 5 unmodified lines | |||
| 383 | { | 390 | { |
| 384 | F_IPint_mul *f; | 391 | F_IPint_mul *f; |
| 385 | mpint *i1, *i2, *ret; | 392 | mpint *i1, *i2, *ret; |
| 393 | void *v; | ||
| 386 | 394 | ||
| 387 | f = fp; | 395 | f = fp; |
| 388 | destroy(*f->ret); | 396 | v = *f->ret; |
| 389 | *f->ret = H; | 397 | *f->ret = H; |
| 398 | destroy(v); | ||
| 390 | 399 | ||
| 391 | if(f->i1 == H || f->i2 == H) | 400 | i1 = MP(f->i1); |
| 392 | error(exNilref); | 401 | i2 = MP(f->i2); |
| 393 | |||
| 394 | i1 = ((IPint*)f->i1)->b; | ||
| 395 | i2 = ((IPint*)f->i2)->b; | ||
| 396 | ret = mpnew(0); | 402 | ret = mpnew(0); |
| 397 | if(ret != nil) | 403 | if(ret != nil) |
| 398 | mpmul(i1, i2, ret); | 404 | mpmul(i1, i2, ret); |
| @@ -404,18 +410,18 @@ IPint_div(void *fp) · 5 unmodified lines | |||
| 404 | { | 410 | { |
| 405 | F_IPint_div *f; | 411 | F_IPint_div *f; |
| 406 | mpint *i1, *i2, *quo, *rem; | 412 | mpint *i1, *i2, *quo, *rem; |
| 413 | void *v; | ||
| 407 | 414 | ||
| 408 | f = fp; | 415 | f = fp; |
| 409 | destroy(f->ret->t0); | 416 | v = f->ret->t0; |
| 410 | f->ret->t0 = H; | 417 | f->ret->t0 = H; |
| 411 | destroy(f->ret->t1); | 418 | destroy(v); |
| 419 | v = f->ret->t1; | ||
| 412 | f->ret->t1 = H; | 420 | f->ret->t1 = H; |
| 421 | destroy(v); | ||
| 413 | 422 | ||
| 414 | if(f->i1 == H || f->i2 == H) | 423 | i1 = MP(f->i1); |
| 415 | error(exNilref); | 424 | i2 = MP(f->i2); |
| 416 | |||
| 417 | i1 = ((IPint*)f->i1)->b; | ||
| 418 | i2 = ((IPint*)f->i2)->b; | ||
| 419 | quo = mpnew(0); | 425 | quo = mpnew(0); |
| 420 | if(quo == nil) | 426 | if(quo == nil) |
| 421 | error(exHeap); | 427 | error(exHeap); |
| @@ -434,16 +440,15 @@ IPint_mod(void *fp) · 12 unmodified lines | |||
| 434 | { | 440 | { |
| 435 | F_IPint_mod *f; | 441 | F_IPint_mod *f; |
| 436 | mpint *i1, *i2, *ret; | 442 | mpint *i1, *i2, *ret; |
| 443 | void *v; | ||
| 437 | 444 | ||
| 438 | f = fp; | 445 | f = fp; |
| 439 | destroy(*f->ret); | 446 | v = *f->ret; |
| 440 | *f->ret = H; | 447 | *f->ret = H; |
| 448 | destroy(v); | ||
| 441 | 449 | ||
| 442 | if(f->i1 == H || f->i2 == H) | 450 | i1 = MP(f->i1); |
| 443 | error(exNilref); | 451 | i2 = MP(f->i2); |
| 444 | |||
| 445 | i1 = ((IPint*)f->i1)->b; | ||
| 446 | i2 = ((IPint*)f->i2)->b; | ||
| 447 | ret = mpnew(0); | 452 | ret = mpnew(0); |
| 448 | if(ret != nil) | 453 | if(ret != nil) |
| 449 | mpmod(i1, i2, ret); | 454 | mpmod(i1, i2, ret); |
| @@ -454,17 +459,15 @@ void · 4 unmodified lines | |||
| 454 | IPint_neg(void *fp) | 459 | IPint_neg(void *fp) |
| 455 | { | 460 | { |
| 456 | F_IPint_neg *f; | 461 | F_IPint_neg *f; |
| 457 | mpint *i, *ret; | 462 | mpint *ret; |
| 463 | void *v; | ||
| 458 | 464 | ||
| 459 | f = fp; | 465 | f = fp; |
| 460 | destroy(*f->ret); | 466 | v = *f->ret; |
| 461 | *f->ret = H; | 467 | *f->ret = H; |
| 468 | destroy(v); | ||
| 462 | 469 | ||
| 463 | if(f->i == H) | 470 | ret = mpcopy(MP(f->i)); |
| 464 | error(exNilref); | ||
| 465 | |||
| 466 | i = ((IPint*)f->i)->b; | ||
| 467 | ret = mpcopy(i); | ||
| 468 | if(ret == nil) | 471 | if(ret == nil) |
| 469 | error(exHeap); | 472 | error(exHeap); |
| 470 | ret->sign = -ret->sign; | 473 | ret->sign = -ret->sign; |
| @@ -477,13 +480,12 @@ void · 6 unmodified lines | |||
| 477 | IPint_copy(void *fp) | 480 | IPint_copy(void *fp) |
| 478 | { | 481 | { |
| 479 | F_IPint_copy *f; | 482 | F_IPint_copy *f; |
| 483 | void *v; | ||
| 480 | 484 | ||
| 481 | f = fp; | 485 | f = fp; |
| 482 | destroy(*f->ret); | 486 | v = *f->ret; |
| 483 | *f->ret = H; | 487 | *f->ret = H; |
| 484 | 488 | destroy(v); | |
| 485 | if(f->i == H) | ||
| 486 | return; | ||
| 487 | 489 | ||
| 488 | *f->ret = newIPint(mpcopy(MP(f->i))); | 490 | *f->ret = newIPint(mpcopy(MP(f->i))); |
| 489 | } | 491 | } |
| @@ -496,11 +498,6 @@ IPint_eq(void *fp) · 6 unmodified lines | |||
| 496 | F_IPint_eq *f; | 498 | F_IPint_eq *f; |
| 497 | 499 | ||
| 498 | f = fp; | 500 | f = fp; |
| 499 | *f->ret = 0; | ||
| 500 | |||
| 501 | if(f->i1 == H || f->i2 == H) | ||
| 502 | return; | ||
| 503 | |||
| 504 | *f->ret = mpcmp(MP(f->i1), MP(f->i2)) == 0; | 501 | *f->ret = mpcmp(MP(f->i1), MP(f->i2)) == 0; |
| 505 | } | 502 | } |
| 506 | 503 | ||
| @@ -511,11 +508,6 @@ IPint_cmp(void *fp) · 4 unmodified lines | |||
| 511 | F_IPint_eq *f; | 508 | F_IPint_eq *f; |
| 512 | 509 | ||
| 513 | f = fp; | 510 | f = fp; |
| 514 | *f->ret = 0; | ||
| 515 | |||
| 516 | if(f->i1 == H || f->i2 == H) | ||
| 517 | error(exNilref); | ||
| 518 | |||
| 519 | *f->ret = mpcmp(MP(f->i1), MP(f->i2)); | 511 | *f->ret = mpcmp(MP(f->i1), MP(f->i2)); |
| 520 | } | 512 | } |
| 521 | 513 | ||
| @@ -524,36 +516,36 @@ void · 2 unmodified lines | |||
| 524 | IPint_shl(void *fp) | 516 | IPint_shl(void *fp) |
| 525 | { | 517 | { |
| 526 | F_IPint_shl *f; | 518 | F_IPint_shl *f; |
| 527 | mpint *ret; | 519 | mpint *ret, *i; |
| 520 | void *v; | ||
| 528 | 521 | ||
| 529 | f = fp; | 522 | f = fp; |
| 530 | destroy(*f->ret); | 523 | v = *f->ret; |
| 531 | *f->ret = H; | 524 | *f->ret = H; |
| 525 | destroy(v); | ||
| 532 | 526 | ||
| 533 | if(f->i == H) | 527 | i = MP(f->i); |
| 534 | error(exNilref); | ||
| 535 | |||
| 536 | ret = mpnew(0); | 528 | ret = mpnew(0); |
| 537 | if(ret != nil) | 529 | if(ret != nil) |
| 538 | mpleft(MP(f->i), f->n, ret); | 530 | mpleft(i, f->n, ret); |
| 539 | *f->ret = newIPint(ret); | 531 | *f->ret = newIPint(ret); |
| 540 | } | 532 | } |
| 541 | void | 533 | void |
| 542 | IPint_shr(void *fp) | 534 | IPint_shr(void *fp) |
| 543 | { | 535 | { |
| 544 | F_IPint_shr *f; | 536 | F_IPint_shr *f; |
| 545 | mpint *ret; | 537 | mpint *ret, *i; |
| 538 | void *v; | ||
| 546 | 539 | ||
| 547 | f = fp; | 540 | f = fp; |
| 548 | destroy(*f->ret); | 541 | v = *f->ret; |
| 549 | *f->ret = H; | 542 | *f->ret = H; |
| 543 | destroy(v); | ||
| 550 | 544 | ||
| 551 | if(f->i == H) | 545 | i = MP(f->i); |
| 552 | error(exNilref); | ||
| 553 | |||
| 554 | ret = mpnew(0); | 546 | ret = mpnew(0); |
| 555 | if(ret != nil) | 547 | if(ret != nil) |
| 556 | mpright(MP(f->i), f->n, ret); | 548 | mpright(i, f->n, ret); |
| 557 | *f->ret = newIPint(ret); | 549 | *f->ret = newIPint(ret); |
| 558 | } | 550 | } |
| 559 | 551 | ||
| @@ -646,17 +638,19 @@ void · 86 unmodified lines | |||
| 646 | IPint_and(void *fp) | 638 | IPint_and(void *fp) |
| 647 | { | 639 | { |
| 648 | F_IPint_and *f; | 640 | F_IPint_and *f; |
| 649 | mpint *ret; | 641 | mpint *ret, *i1, *i2; |
| 642 | void *v; | ||
| 650 | 643 | ||
| 651 | f = fp; | 644 | f = fp; |
| 652 | destroy(*f->ret); | 645 | v = *f->ret; |
| 653 | *f->ret = H; | 646 | *f->ret = H; |
| 647 | destroy(v); | ||
| 654 | 648 | ||
| 655 | if(f->i1 == H || f->i2 == H) | 649 | i1 = MP(f->i1); |
| 656 | error(exNilref); | 650 | i2 = MP(f->i2); |
| 657 | ret = mpnew(0); | 651 | ret = mpnew(0); |
| 658 | if(ret != nil) | 652 | if(ret != nil) |
| 659 | mpand(MP(f->i1), MP(f->i2), ret); | 653 | mpand(i1, i2, ret); |
| 660 | *f->ret = newIPint(ret); | 654 | *f->ret = newIPint(ret); |
| 661 | } | 655 | } |
| 662 | 656 | ||
| @@ -664,17 +658,19 @@ void · 1 unmodified line | |||
| 664 | IPint_ori(void *fp) | 658 | IPint_ori(void *fp) |
| 665 | { | 659 | { |
| 666 | F_IPint_ori *f; | 660 | F_IPint_ori *f; |
| 667 | mpint *ret; | 661 | mpint *ret, *i1, *i2; |
| 662 | void *v; | ||
| 668 | 663 | ||
| 669 | f = fp; | 664 | f = fp; |
| 670 | destroy(*f->ret); | 665 | v = *f->ret; |
| 671 | *f->ret = H; | 666 | *f->ret = H; |
| 667 | destroy(v); | ||
| 672 | 668 | ||
| 673 | if(f->i1 == H || f->i2 == H) | 669 | i1 = MP(f->i1); |
| 674 | error(exNilref); | 670 | i2 = MP(f->i2); |
| 675 | ret = mpnew(0); | 671 | ret = mpnew(0); |
| 676 | if(ret != nil) | 672 | if(ret != nil) |
| 677 | mpor(MP(f->i1), MP(f->i2), ret); | 673 | mpor(i1, i2, ret); |
| 678 | *f->ret = newIPint(ret); | 674 | *f->ret = newIPint(ret); |
| 679 | } | 675 | } |
| 680 | 676 | ||
| @@ -682,17 +678,19 @@ void · 1 unmodified line | |||
| 682 | IPint_xor(void *fp) | 678 | IPint_xor(void *fp) |
| 683 | { | 679 | { |
| 684 | F_IPint_xor *f; | 680 | F_IPint_xor *f; |
| 685 | mpint *ret; | 681 | mpint *ret, *i1, *i2; |
| 682 | void *v; | ||
| 686 | 683 | ||
| 687 | f = fp; | 684 | f = fp; |
| 688 | destroy(*f->ret); | 685 | v = *f->ret; |
| 689 | *f->ret = H; | 686 | *f->ret = H; |
| 687 | destroy(v); | ||
| 690 | 688 | ||
| 691 | if(f->i1 == H || f->i2 == H) | 689 | i1 = MP(f->i1); |
| 692 | error(exNilref); | 690 | i2 = MP(f->i2); |
| 693 | ret = mpnew(0); | 691 | ret = mpnew(0); |
| 694 | if(ret != nil) | 692 | if(ret != nil) |
| 695 | mpxor(MP(f->i1), MP(f->i2), ret); | 693 | mpxor(i1, i2, ret); |
| 696 | *f->ret = newIPint(ret); | 694 | *f->ret = newIPint(ret); |
| 697 | } | 695 | } |
| 698 | 696 | ||
| @@ -700,16 +698,17 @@ void · 1 unmodified line | |||
| 700 | IPint_not(void *fp) | 698 | IPint_not(void *fp) |
| 701 | { | 699 | { |
| 702 | F_IPint_not *f; | 700 | F_IPint_not *f; |
| 703 | mpint *ret; | 701 | mpint *ret, *i1; |
| 702 | void *v; | ||
| 704 | 703 | ||
| 705 | f = fp; | 704 | f = fp; |
| 706 | destroy(*f->ret); | 705 | v = *f->ret; |
| 707 | *f->ret = H; | 706 | *f->ret = H; |
| 707 | destroy(v); | ||
| 708 | 708 | ||
| 709 | if(f->i1 == H) | 709 | i1 = MP(f->i1); |
| 710 | error(exNilref); | ||
| 711 | ret = mpnew(0); | 710 | ret = mpnew(0); |
| 712 | if(ret != nil) | 711 | if(ret != nil) |
| 713 | mpnot(MP(f->i1), ret); | 712 | mpnot(i1, ret); |
| 714 | *f->ret = newIPint(ret); | 713 | *f->ret = newIPint(ret); |
| 715 | } | 714 | } |