Ignore:
Timestamp:
Sep 11, 2023, 12:55:49 PM (2 years ago)
Author:
caparsons <caparson@…>
Branches:
master
Children:
c0035fc
Parents:
9509d67a (diff), 73d0a84c (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' of plg.uwaterloo.ca:software/cfa/cfa-cc

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tests/io/manipulatorsInput.cfa

    r9509d67a rc8ec58e  
    1515
    1616int main() {
     17        {
     18                // Upfront checks to ensure buffer safety.  Once these pass, the simpler `wdi(sizeof(s),s)`
     19                // usage, as in the scanf alignment cases below, is justified.
     20                struct {
     21                        char buf[8];
     22                        char canary;
     23                } data;
     24                static_assert( sizeof(data.buf) == 8 );
     25                static_assert( &data.buf[8] == &data.canary );  // canary comes right after buf
     26
     27                void rep(const char* casename) {
     28                        data.canary = 42;
     29                        bool caught = false;
     30                        try {
     31                                sin | wdi( sizeof(data.buf), data.buf );
     32                        } catch (cstring_length*) {
     33                                caught = true;
     34                        }
     35                        printf( "%s \"%s\"", casename, data.buf );
     36                        if ( caught ) {
     37                                printf(", exception occurred");
     38                        }
     39                        if ( data.canary == 42 ) {
     40                                printf(", canary ok");
     41                        } else {
     42                                printf(", canary overwritten to %d", data.canary);
     43                        }
     44                        printf("\n");
     45                }
     46
     47                rep("pre1");
     48                rep("pre2a");
     49                rep("pre2b");
     50                scanf("\n");  // next test does not start with %s so does not tolerate leading whitespace
     51        }
    1752        {
    1853                char s[] = "yyyyyyyyyyyyyyyyyyyy";
Note: See TracChangeset for help on using the changeset viewer.