History

20080611-1539

Charles.Forsyth committed 18 years ago

Commit 19060cf1 parent 450bfc01 file · +116 −117Browse files

Unified · Split

libinterp/ipint.c+116−117
@@ -59,13 +59,12 @@ IPint_iptob64z(void *fp) · 58 unmodified lines
5959 char buf[MaxBigBytes]; /* TO DO: should allocate these */
6060 uchar *p;
6161 int n, o;
62+ void *v;
6263
6364 f = fp;
64− destroy(*f->ret);
65+ v = *f->ret;
6566 *f->ret = H;
66−
67− if(f->i == H)
68− error(exNilref);
67+ destroy(v);
6968
7069 b = MP(f->i);
7170 n = (b->top+1)*Dbytes;
@@ -94,13 +93,12 @@ IPint_iptob64(void *fp) · 22 unmodified lines
9493 {
9594 F_IPint_iptob64 *f;
9695 char buf[MaxBigBytes];
96+ void *v;
9797
9898 f = fp;
99− destroy(*f->ret);
99+ v = *f->ret;
100100 *f->ret = H;
101−
102− if(f->i == H)
103− error(exNilref);
101+ destroy(v);
104102
105103 mptoa(MP(f->i), 64, buf, sizeof(buf));
106104 retstr(buf, f->ret);
@@ -111,13 +109,12 @@ IPint_iptobytes(void *fp) · 4 unmodified lines
111109 {
112110 F_IPint_iptobytes *f;
113111 uchar buf[MaxBigBytes];
112+ void *v;
114113
115114 f = fp;
116− destroy(*f->ret);
115+ v = *f->ret;
117116 *f->ret = H;
118−
119− if(f->i == H)
120− error(exNilref);
117+ destroy(v);
121118
122119 /* TO DO: two's complement or have ipmagtobe? */
123120 *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
128125 {
129126 F_IPint_iptobebytes *f;
130127 uchar buf[MaxBigBytes];
128+ void *v;
131129
132130 f = fp;
133− destroy(*f->ret);
131+ v = *f->ret;
134132 *f->ret = H;
135−
136− if(f->i == H)
137− error(exNilref);
133+ destroy(v);
138134
139135 *f->ret = mem2array(buf, mptobe(MP(f->i), buf, sizeof(buf), nil));
140136 }
@@ -144,13 +140,12 @@ IPint_iptostr(void *fp) · 3 unmodified lines
144140 {
145141 F_IPint_iptostr *f;
146142 char buf[MaxBigBytes];
143+ void *v;
147144
148145 f = fp;
149− destroy(*f->ret);
146+ v = *f->ret;
150147 *f->ret = H;
151−
152− if(f->i == H)
153− error(exNilref);
148+ destroy(v);
154149
155150 mptoa(MP(f->i), f->base, buf, sizeof(buf));
156151 retstr(buf, f->ret);
@@ -179,10 +174,12 @@ void · 22 unmodified lines
179174 IPint_b64toip(void *fp)
180175 {
181176 F_IPint_b64toip *f;
177+ void *v;
182178
183179 f = fp;
184− destroy(*f->ret);
180+ v = *f->ret;
185181 *f->ret = H;
182+ destroy(v);
186183
187184 *f->ret = strtoipint(f->str, 64);
188185 }
@@ -192,10 +189,12 @@ IPint_bytestoip(void *fp) · 3 unmodified lines
192189 {
193190 F_IPint_bytestoip *f;
194191 mpint *b;
192+ void *v;
195193
196194 f = fp;
197− destroy(*f->ret);
195+ v = *f->ret;
198196 *f->ret = H;
197+ destroy(v);
199198
200199 if(f->buf == H)
201200 error(exNilref);
@@ -209,10 +208,12 @@ IPint_bebytestoip(void *fp) · 7 unmodified lines
209208 {
210209 F_IPint_bebytestoip *f;
211210 mpint *b;
211+ void *v;
212212
213213 f = fp;
214− destroy(*f->ret);
214+ v = *f->ret;
215215 *f->ret = H;
216+ destroy(v);
216217
217218 if(f->mag == H)
218219 error(exNilref);
@@ -225,10 +226,12 @@ void · 6 unmodified lines
225226 IPint_strtoip(void *fp)
226227 {
227228 F_IPint_strtoip *f;
229+ void *v;
228230
229231 f = fp;
230− destroy(*f->ret);
232+ v = *f->ret;
231233 *f->ret = H;
234+ destroy(v);
232235
233236 *f->ret = strtoipint(f->str, f->base);
234237 }
@@ -275,10 +278,12 @@ void · 40 unmodified lines
275278 IPint_inttoip(void *fp)
276279 {
277280 F_IPint_inttoip *f;
281+ void *v;
278282
279283 f = fp;
280− destroy(*f->ret);
284+ v = *f->ret;
281285 *f->ret = H;
286+ destroy(v);
282287
283288 *f->ret = newIPint(itomp(f->i, nil));
284289 }
@@ -300,21 +305,23 @@ void · 15 unmodified lines
300305 IPint_expmod(void *fp)
301306 {
302307 F_IPint_expmod *f;
303− mpint *ret, *mod;
308+ mpint *ret, *mod, *base, *exp;
309+ void *v;
304310
305311 f = fp;
306− destroy(*f->ret);
312+ v = *f->ret;
307313 *f->ret = H;
314+ destroy(v);
308315
309− if(f->base == H || f->exp == H)
310− error(exNilref);
311−
312− mod = nil;
316+ base = MP(f->base);
317+ exp = MP(f->exp);
313318 if(f->mod != H)
314319 mod = MP(f->mod);
320+ else
321+ mod = nil;
315322 ret = mpnew(0);
316323 if(ret != nil)
317− mpexp(MP(f->base), MP(f->exp), mod, ret);
324+ mpexp(base, exp, mod, ret);
318325 *f->ret = newIPint(ret);
319326 }
320327
@@ -324,10 +331,12 @@ IPint_invert(void *fp) · 3 unmodified lines
324331 {
325332 F_IPint_invert *f;
326333 mpint *ret;
334+ void *v;
327335
328336 f = fp;
329− destroy(*f->ret);
337+ v = *f->ret;
330338 *f->ret = H;
339+ destroy(v);
331340
332341 ret = mpnew(0);
333342 if(ret != nil)
@@ -341,16 +350,15 @@ IPint_add(void *fp) · 7 unmodified lines
341350 {
342351 F_IPint_add *f;
343352 mpint *i1, *i2, *ret;
353+ void *v;
344354
345355 f = fp;
346− destroy(*f->ret);
356+ v = *f->ret;
347357 *f->ret = H;
358+ destroy(v);
348359
349− if(f->i1 == H || f->i2 == H)
350− error(exNilref);
351−
352− i1 = ((IPint*)f->i1)->b;
353− i2 = ((IPint*)f->i2)->b;
360+ i1 = MP(f->i1);
361+ i2 = MP(f->i2);
354362 ret = mpnew(0);
355363 if(ret != nil)
356364 mpadd(i1, i2, ret);
@@ -362,16 +370,15 @@ IPint_sub(void *fp) · 5 unmodified lines
362370 {
363371 F_IPint_sub *f;
364372 mpint *i1, *i2, *ret;
373+ void *v;
365374
366375 f = fp;
367− destroy(*f->ret);
376+ v = *f->ret;
368377 *f->ret = H;
378+ destroy(v);
369379
370− if(f->i1 == H || f->i2 == H)
371− error(exNilref);
372−
373− i1 = ((IPint*)f->i1)->b;
374− i2 = ((IPint*)f->i2)->b;
380+ i1 = MP(f->i1);
381+ i2 = MP(f->i2);
375382 ret = mpnew(0);
376383 if(ret != nil)
377384 mpsub(i1, i2, ret);
@@ -383,16 +390,15 @@ IPint_mul(void *fp) · 5 unmodified lines
383390 {
384391 F_IPint_mul *f;
385392 mpint *i1, *i2, *ret;
393+ void *v;
386394
387395 f = fp;
388− destroy(*f->ret);
396+ v = *f->ret;
389397 *f->ret = H;
398+ destroy(v);
390399
391− if(f->i1 == H || f->i2 == H)
392− error(exNilref);
393−
394− i1 = ((IPint*)f->i1)->b;
395− i2 = ((IPint*)f->i2)->b;
400+ i1 = MP(f->i1);
401+ i2 = MP(f->i2);
396402 ret = mpnew(0);
397403 if(ret != nil)
398404 mpmul(i1, i2, ret);
@@ -404,18 +410,18 @@ IPint_div(void *fp) · 5 unmodified lines
404410 {
405411 F_IPint_div *f;
406412 mpint *i1, *i2, *quo, *rem;
413+ void *v;
407414
408415 f = fp;
409− destroy(f->ret->t0);
416+ v = f->ret->t0;
410417 f->ret->t0 = H;
411− destroy(f->ret->t1);
418+ destroy(v);
419+ v = f->ret->t1;
412420 f->ret->t1 = H;
421+ destroy(v);
413422
414− if(f->i1 == H || f->i2 == H)
415− error(exNilref);
416−
417− i1 = ((IPint*)f->i1)->b;
418− i2 = ((IPint*)f->i2)->b;
423+ i1 = MP(f->i1);
424+ i2 = MP(f->i2);
419425 quo = mpnew(0);
420426 if(quo == nil)
421427 error(exHeap);
@@ -434,16 +440,15 @@ IPint_mod(void *fp) · 12 unmodified lines
434440 {
435441 F_IPint_mod *f;
436442 mpint *i1, *i2, *ret;
443+ void *v;
437444
438445 f = fp;
439− destroy(*f->ret);
446+ v = *f->ret;
440447 *f->ret = H;
448+ destroy(v);
441449
442− if(f->i1 == H || f->i2 == H)
443− error(exNilref);
444−
445− i1 = ((IPint*)f->i1)->b;
446− i2 = ((IPint*)f->i2)->b;
450+ i1 = MP(f->i1);
451+ i2 = MP(f->i2);
447452 ret = mpnew(0);
448453 if(ret != nil)
449454 mpmod(i1, i2, ret);
@@ -454,17 +459,15 @@ void · 4 unmodified lines
454459 IPint_neg(void *fp)
455460 {
456461 F_IPint_neg *f;
457− mpint *i, *ret;
462+ mpint *ret;
463+ void *v;
458464
459465 f = fp;
460− destroy(*f->ret);
466+ v = *f->ret;
461467 *f->ret = H;
468+ destroy(v);
462469
463− if(f->i == H)
464− error(exNilref);
465−
466− i = ((IPint*)f->i)->b;
467− ret = mpcopy(i);
470+ ret = mpcopy(MP(f->i));
468471 if(ret == nil)
469472 error(exHeap);
470473 ret->sign = -ret->sign;
@@ -477,13 +480,12 @@ void · 6 unmodified lines
477480 IPint_copy(void *fp)
478481 {
479482 F_IPint_copy *f;
483+ void *v;
480484
481485 f = fp;
482− destroy(*f->ret);
486+ v = *f->ret;
483487 *f->ret = H;
484−
485− if(f->i == H)
486− return;
488+ destroy(v);
487489
488490 *f->ret = newIPint(mpcopy(MP(f->i)));
489491 }
@@ -496,11 +498,6 @@ IPint_eq(void *fp) · 6 unmodified lines
496498 F_IPint_eq *f;
497499
498500 f = fp;
499− *f->ret = 0;
500−
501− if(f->i1 == H || f->i2 == H)
502− return;
503−
504501 *f->ret = mpcmp(MP(f->i1), MP(f->i2)) == 0;
505502 }
506503
@@ -511,11 +508,6 @@ IPint_cmp(void *fp) · 4 unmodified lines
511508 F_IPint_eq *f;
512509
513510 f = fp;
514− *f->ret = 0;
515−
516− if(f->i1 == H || f->i2 == H)
517− error(exNilref);
518−
519511 *f->ret = mpcmp(MP(f->i1), MP(f->i2));
520512 }
521513
@@ -524,36 +516,36 @@ void · 2 unmodified lines
524516 IPint_shl(void *fp)
525517 {
526518 F_IPint_shl *f;
527− mpint *ret;
519+ mpint *ret, *i;
520+ void *v;
528521
529522 f = fp;
530− destroy(*f->ret);
523+ v = *f->ret;
531524 *f->ret = H;
525+ destroy(v);
532526
533− if(f->i == H)
534− error(exNilref);
535−
527+ i = MP(f->i);
536528 ret = mpnew(0);
537529 if(ret != nil)
538− mpleft(MP(f->i), f->n, ret);
530+ mpleft(i, f->n, ret);
539531 *f->ret = newIPint(ret);
540532 }
541533 void
542534 IPint_shr(void *fp)
543535 {
544536 F_IPint_shr *f;
545− mpint *ret;
537+ mpint *ret, *i;
538+ void *v;
546539
547540 f = fp;
548− destroy(*f->ret);
541+ v = *f->ret;
549542 *f->ret = H;
543+ destroy(v);
550544
551− if(f->i == H)
552− error(exNilref);
553−
545+ i = MP(f->i);
554546 ret = mpnew(0);
555547 if(ret != nil)
556− mpright(MP(f->i), f->n, ret);
548+ mpright(i, f->n, ret);
557549 *f->ret = newIPint(ret);
558550 }
559551
@@ -646,17 +638,19 @@ void · 86 unmodified lines
646638 IPint_and(void *fp)
647639 {
648640 F_IPint_and *f;
649− mpint *ret;
641+ mpint *ret, *i1, *i2;
642+ void *v;
650643
651644 f = fp;
652− destroy(*f->ret);
645+ v = *f->ret;
653646 *f->ret = H;
647+ destroy(v);
654648
655− if(f->i1 == H || f->i2 == H)
656− error(exNilref);
649+ i1 = MP(f->i1);
650+ i2 = MP(f->i2);
657651 ret = mpnew(0);
658652 if(ret != nil)
659− mpand(MP(f->i1), MP(f->i2), ret);
653+ mpand(i1, i2, ret);
660654 *f->ret = newIPint(ret);
661655 }
662656
@@ -664,17 +658,19 @@ void · 1 unmodified line
664658 IPint_ori(void *fp)
665659 {
666660 F_IPint_ori *f;
667− mpint *ret;
661+ mpint *ret, *i1, *i2;
662+ void *v;
668663
669664 f = fp;
670− destroy(*f->ret);
665+ v = *f->ret;
671666 *f->ret = H;
667+ destroy(v);
672668
673− if(f->i1 == H || f->i2 == H)
674− error(exNilref);
669+ i1 = MP(f->i1);
670+ i2 = MP(f->i2);
675671 ret = mpnew(0);
676672 if(ret != nil)
677− mpor(MP(f->i1), MP(f->i2), ret);
673+ mpor(i1, i2, ret);
678674 *f->ret = newIPint(ret);
679675 }
680676
@@ -682,17 +678,19 @@ void · 1 unmodified line
682678 IPint_xor(void *fp)
683679 {
684680 F_IPint_xor *f;
685− mpint *ret;
681+ mpint *ret, *i1, *i2;
682+ void *v;
686683
687684 f = fp;
688− destroy(*f->ret);
685+ v = *f->ret;
689686 *f->ret = H;
687+ destroy(v);
690688
691− if(f->i1 == H || f->i2 == H)
692− error(exNilref);
689+ i1 = MP(f->i1);
690+ i2 = MP(f->i2);
693691 ret = mpnew(0);
694692 if(ret != nil)
695− mpxor(MP(f->i1), MP(f->i2), ret);
693+ mpxor(i1, i2, ret);
696694 *f->ret = newIPint(ret);
697695 }
698696
@@ -700,16 +698,17 @@ void · 1 unmodified line
700698 IPint_not(void *fp)
701699 {
702700 F_IPint_not *f;
703− mpint *ret;
701+ mpint *ret, *i1;
702+ void *v;
704703
705704 f = fp;
706− destroy(*f->ret);
705+ v = *f->ret;
707706 *f->ret = H;
707+ destroy(v);
708708
709− if(f->i1 == H)
710− error(exNilref);
709+ i1 = MP(f->i1);
711710 ret = mpnew(0);
712711 if(ret != nil)
713− mpnot(MP(f->i1), ret);
712+ mpnot(i1, ret);
714713 *f->ret = newIPint(ret);
715714 }