Ignore:
Timestamp:
Sep 4, 2024, 11:39:25 AM (2 months ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
master
Children:
508cff0
Parents:
db19e1d
Message:

correct check for EOF when reading character strings

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/iostream.cfa

    rdb19e1d r737bf73  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Aug 17 12:31:47 2024
    13 // Update Count     : 2038
     12// Last Modified On : Wed Sep  4 11:30:12 2024
     13// Update Count     : 2040
    1414//
    1515
     
    512512                if ( cnt == 1 && f.flags.left ) { wd = f.wd; f.wd = maxdig; } // copy f.wd and reset for printing middle chunk
    513513                // printf( "R val:%#lx(%lu) wd:%u pc:%u base:%c neg:%d pc:%d left:%d nobsdp:%d sign:%d pad0:%d\n",
    514                 //              f.val, f.val, f.wd, f.pc, f.base, f.flags.neg, f.flags.pc, f.flags.left, f.flags.nobsdp, f.flags.sign, f.flags.pad0 ); 
     514                //              f.val, f.val, f.wd, f.pc, f.base, f.flags.neg, f.flags.pc, f.flags.left, f.flags.nobsdp, f.flags.sign, f.flags.pad0 );
    515515                (ostype &)(os | f);
    516516                if ( cnt == 1 ) {
     
    554554                if ( f.flags.neg ) f.val = -f.val;
    555555                // printf( "L val:%#lx(%lu) wd:%u pc:%u base:%c neg:%d pc:%d left:%d nobsdp:%d sign:%d pad0:%d\n",
    556                 //              f.val, f.val, f.wd, f.pc, f.base, f.flags.neg, f.flags.pc, f.flags.left, f.flags.nobsdp, f.flags.sign, f.flags.pad0 ); 
     556                //              f.val, f.val, f.wd, f.pc, f.base, f.flags.neg, f.flags.pc, f.flags.left, f.flags.nobsdp, f.flags.sign, f.flags.pad0 );
    557557                (ostype &)(os | f);
    558558
     
    597597        "y", "z", "a", "f", "p", "n", "u", "m", "",
    598598        "K", "M", "G", "T", "P", "E", "Z", "Y"
    599 }; 
     599};
    600600#define SUFFIXES_START (-24) /* Smallest power for which there is a suffix defined. */
    601601#define SUFFIXES_END (SUFFIXES_START + (int)((sizeof(suffixes) / sizeof(char *) - 1) * 3))
     
    10641064                        else args = fmt( is, fmtstr, s, &len );
    10651065                        // fprintf( stderr, "cstr %s %d %d %d\n", fmtstr, args, len, f.cstr.wd );
     1066
     1067                        // No data read and eof is on => true eof so raise exception.
     1068                        if ( len == 0 && eof( is ) ) throwResume ExceptionInst( end_of_file );
     1069
    10661070                        if ( check && len >= rwd && ! eof( is ) ) {     // might not fit
    10671071                                char peek;
     
    10871091                                else args = fmt( is, fmtstr, s, &len );
    10881092
     1093                                // No data read and eof is on => true eof so raise exception.
     1094                                if ( len == 0 && eof( is ) ) throwResume ExceptionInst( end_of_file );
     1095
    10891096                                if ( check && len == rwd && ! eof( is ) ) {     // might not fit
    10901097                                        char peek;
     
    11061113                                else args = fmt( is, fmtstr, s, &len );
    11071114                                // fprintf( stderr, "incl/excl %s \"%s\" %d %d %d %d %d %c\n", fmtstr, s, args, wd, len, eof( is ), check, s[wd] );
     1115
     1116                                // No data read and eof is on => true eof so raise exception.
     1117                                if ( len == 0 && eof( is ) ) throwResume ExceptionInst( end_of_file );
     1118
    11081119                                if ( check && len == rwd && ! eof( is ) ) {     // might not fit
    11091120                                        // fprintf( stderr, "overflow\n" );
Note: See TracChangeset for help on using the changeset viewer.