@@ -331,18 +331,24 @@ register pointer p;
331
331
pointer_update (p -> c .obj .iv [0 ],makeint (++ ix ));
332
332
} }
333
333
334
- static int getprlength (ctx )
334
+ static int getprlength (ctx , isnull )
335
335
context * ctx ;
336
+ int * isnull ;
336
337
{ register pointer x ;
337
338
x = Spevalof (PRLENGTH );
338
- if (isint (x )) return (intval (x ));
339
- else return (65536 );}
339
+ if (isint (x )) {
340
+ * isnull = 0 ;
341
+ return (intval (x ));}
342
+ else {
343
+ * isnull = 1 ;
344
+ return (0 );} }
340
345
341
346
static pointer printvector (ctx ,vec ,f ,leng ,prlevel )
342
347
register context * ctx ;
343
348
register pointer vec ,f ,leng ;
344
349
int prlevel ;
345
- { register eusinteger_t n ,i = 0 ,eltype ,x ,prlength = getprlength (ctx );
350
+ { register eusinteger_t n ,i = 0 ,eltype ,x ;
351
+ int nullprlen = 0 , prlength = getprlength (ctx , & nullprlen );
346
352
pointer sizesave ;
347
353
348
354
eltype = elmtypeof (vec );
@@ -366,7 +372,7 @@ int prlevel;
366
372
printstr (ctx ,n ,vec -> c .str .chars ,f ); break ;
367
373
case ELM_INT :
368
374
writestr (f ,(byte * )"#i(" ,3 );
369
- while (i < n && prlength > 0 ) {
375
+ while (i < n && ( nullprlen || prlength > 0 ) ) {
370
376
printint (ctx ,vec -> c .ivec .iv [i ++ ],f ,intval (Spevalof (PRINTBASE )),
371
377
0 ,0 );
372
378
if (i < n ) writech (f ,' ' );
@@ -376,7 +382,7 @@ int prlevel;
376
382
break ;
377
383
case ELM_FLOAT :
378
384
writestr (f ,(byte * )"#f(" ,3 );
379
- while (i < n && prlength > 0 ) {
385
+ while (i < n && ( nullprlen || prlength > 0 ) ) {
380
386
printflt (vec -> c .fvec .fv [i ++ ],f );
381
387
if (i < n ) writech (f ,' ' );
382
388
prlength -- ; }
@@ -395,7 +401,7 @@ int prlevel;
395
401
writech (f ,' ' );
396
402
printint (ctx ,(eusinteger_t )vec -> c .vec .size ,f ,intval (Spevalof (PRINTBASE )),0 ,0 );
397
403
writech (f ,' ' );}
398
- while (i < n && prlength > 0 ) {
404
+ while (i < n && ( nullprlen || prlength > 0 ) ) {
399
405
prin1 (ctx ,vec -> c .vec .v [i ++ ],f ,prlevel );
400
406
if (i < n ) writech (f ,' ' ); }
401
407
if (i < n ) writestr (f ,(byte * )"... " ,4 );
@@ -476,7 +482,8 @@ register pointer x,f;
476
482
register pointer fobj ;
477
483
register int prlevel ;
478
484
{ register pointer rest = ccdr (x );
479
- register int prlength = getprlength (ctx ),shareix ;
485
+ register int shareix ;
486
+ int nullprlen = 0 , prlength = getprlength (ctx , & nullprlen );
480
487
481
488
if (fobj == QUOTE && islist (rest ) && ccdr (rest )== NIL ) {
482
489
writech (f ,'\'' );
@@ -490,7 +497,7 @@ register int prlevel;
490
497
prin1 (ctx ,fobj ,f ,prlevel );
491
498
x = rest ;
492
499
while (islist (x ) && !s_marked (x )) {
493
- if (-- prlength <=0 ) {
500
+ if (! nullprlen && -- prlength <=0 ) {
494
501
writestr (f ,(byte * )" ..." ,4 );
495
502
x = NIL ; break ;}
496
503
else {
@@ -507,14 +514,14 @@ register pointer fobj;
507
514
int prlevel ;
508
515
{ pointer klass , * varvec ;
509
516
register int i = 0 ,s ;
510
- int prlength = getprlength (ctx );
517
+ int nullprlen = 0 , prlength = getprlength (ctx , & nullprlen );
511
518
512
519
writestr (f ,(byte * )"#s(" ,3 );
513
520
klass = classof (x );
514
521
printsym (ctx ,klass -> c .cls .name ,f );
515
522
s = objsize (x ); varvec = klass -> c .cls .vars -> c .vec .v ;
516
523
prlength -- ;
517
- while (i < s && prlength > 0 ) {
524
+ while (i < s && ( nullprlen || prlength > 0 ) ) {
518
525
writech (f ,' ' );
519
526
printsym (ctx ,varvec [i ],f );
520
527
writech (f ,' ' );
@@ -532,12 +539,13 @@ pointer fobj;
532
539
int prlevel ;
533
540
{ pointer klass ;
534
541
register int i = 0 ,s ;
535
- int prlength = getprlength (ctx );
542
+ int nullprlen = 0 , prlength = getprlength (ctx , & nullprlen );
543
+
536
544
writestr (f ,(byte * )"#J(" ,3 );
537
545
klass = classof (x );
538
546
printsym (ctx ,klass -> c .cls .name ,f );
539
547
s = objsize (x );
540
- while (i < s && prlength -- > 0 ) {
548
+ while (i < s && ( nullprlen || prlength -- > 0 ) ) {
541
549
writech (f ,' ' );
542
550
if (i == 0 ) prin1 (ctx ,fobj ,f ,prlevel );
543
551
else prin1 (ctx ,x -> c .obj .iv [i ],f ,prlevel );
0 commit comments