ISO/ IEC JTC1/SC22/WG14 N745

                                Document number: WG14 N745 (J11/97-108)
 
Title:   Draft 11Pre1 Edit Issues List
Authors: Jim Thomas, Tom Robinson, Douglas Walls, J. Benito
Date:    08 Aug 1997
 

  N602 (10/96) <inttypes.h> strtoimax() & strtoumax() functions
                 Approved with changes detailed in the 10/96 Toronto minutes
Not Done, cover letter to c9x D11 indicated this was completed.

  N587 (02/97) Proposed wording for bool <stdbool.h>
                 Approved with changes detailed in the 02/97, Kona minutes
Not Done

  N611 (10/96) Addition of predefined identifier __func__
                 Approved with changes detailed in the 10/96 Toronto minutes.
Not Done

  N655 (02/97) N504 and N643 (C9X Draft 8)
		 fpos_t change incorrectly applied to FILE
Completed correctly.

  N671 (06/97)	va_copy proposal
Applied with errors

  N673 (06/97)	adjustments to phases of translation
Applied with errors

  N675 (06/97)	Changes related to DRs 77, 143, 144, 146, 147, and 149
Applied with errors

  N683 (06/97) Final Edits for incorportating VLA's into C9X
		Approved as amended by the 06/97, London minutes
Applied with errors

  N685 (06/97) Compatibility Issues with Union Members.
Applied with an error

  N686	(06/97) Obsolescent Features of the C Standard
Applied correctly

  N688  (06/97)  Namespace issues   <inttypes.h> - future directions
Applied with an error

  N691 (06/97) Representation of values
                 Approved as amended by the 06/97, London minutes
Applied with errors

  N692 (06/97) Implicit int cleanup
Applied correctly

  N693 (06/97) Type-Generic Math Functions
Applied with errors

  N694 (06/97) Floating-Point & Complex Arithmetic Enhancements
Applied with errors

  N695 (06/97)  Grammar Start Symbol
Applied with errors

  N696 (06/97) Standard pragmas
Applied with errors

  N698 (06/97)	Implementation Defined Integral Types
Applied with errors

  N701 (06/97) vscanf
                 Approved as amended by the 06/97, London minutes
Applied with errors

  N703 (06/97) ungetc
Applied correctly

  N705 (06/97) Defect Reports since TC2 that promise some action in C9X
                 Approved DR 145, 150, 155, 158 & 162 as amended by the 06/97,
                   London minutes
                 Approved DR 160 as is
DR 150, 155, 158, 160 applied correctly.
DR 145 & 162 applied with errors.

  N707 (06/97) Varargs for function-like macros
Applied with errors

  N717 (06/97)	Extended Identifiers
		Approved as amdended by the 08/97, London minutes
Applied with errors

  N721 (06/97) Unary * operator 
		Approved as amdended by the 08/97, London minutes
Applied with errors

  N722 (06/97)	Removing implicit int
Applied with errors

  N723 (06/97) Changes to shift operators
                 Approved as amended by the 06/97, London minutes
Applied with errors

  N724 (06/97) Minor alteration to representation of types
Applied correctly

  N728  (06/97)  scalbn
Applied with errors

  N729 (06/97) Mode strings in fopen()
Applied correctly

  N733  (06/97) New formats for strftime()
Applied with errors

  N734  (06/97) Misc. FP Cleanup Items
Applied with errors

  N736  (06/97) Preprocessor arithmetic
Applied correctly

  N740  (06/97)  Mixing declarations and code
Applied with errors

  N741  (06/97)	inlining 
Applied with errors

  DR142
This change as brought forth in the London minutes was added
correctly.

--------------------------------CUT HERE---------------------------------------

All references for corrections are to C9X Draft 11-pre1

(pg 3 of TC2, has a change to 6.8.3 pg 89 of c89, that has not been applied)
Page 139, 6.8.3 Macro replacement, para #3
  Change "may be" to "shall not be".

(N631)

Page 186, 7.6.4.4 The feupdateenv function, para 3
  Change "FENV_ACCESS ON" to "#pragma STDC FENV_ACCESS ON".


(N638: items 1,2,4,7)

Page 181, 7.6.2.3 The feraiseexcept function, para #1
  Interchange the second and third sentences.


(N657: items 6,9,11-14)

Item 9 is entered correctly.

Item 13:

Page 447, G.5.1 Multiplicative operators, para #5
  Paragraph numbering is strange in that the examples are still in para
#5, except for the commentary on the second example which is para #6.

Page 450, G.5.1 Multiplicative operators, para #6 (as in draft)
  Correct indentation of paragraph.

Item 14:

Page 455, G.6.8 The cexp function, bullet cexp(-inf+iNaN)
  Correct "is unspecified" to be "are unspecified".

Item 6:

Page 201, 7.7.6.12 The scalb function, para #2
  Correct "implementatiion-defined" to be "implementation-defined".

Page 201, 7.7.6.12 The scalb function, para #3
  Change "returns" to "returns the value of".  (This is an editorial
change for consistency.)

Page 201, 7.7.6.13 The scalbn function, para #3
  Change "returns" to "returns the value of".  (This is an editorial
change for consistency.)

Page 439, F.9.3.12 The scalb function, bullet scalb(+0,y)
  Correct the typeface of the second "y".

Page 439, F.9.3.12 The scalb function, bullet scalb(+inf,y)
  Correct the typeface of the second "y".

Page 425, F.3 Operators and functions
  Correct "The scalb function ..." to "The scalbn function ...".

Page 437, F.9.3.4, The frexp function, para #2
  Correct "scalb" to "scalbn".

Page 449, G.5.1 Multiplicative operators, example 2
  Correct two occurrences of "scalb" to "scalbn".

Page 202, 7.7.6.16 The ilogb function, para #3
  Correct "exponenet" to be "exponent".

Item 11 is entered correctly.

Item 12

Page 208, 7.7.9.9 The llround function, para #2
  Correct "lroundtol" to be "lround".

 
(N671)  va_copy proposal
 
NOTE:   Page 234, 7.12.1 states that va_copy "shall be implemented as
        a macro, not as an actual function."  But in the description
        of va_copy on Page 236, paragraph #2 states, "The va_copy
        function or macro..."
 
        This is as it appears in the proposal.  It seems that the
        words, "function or" should be deleted.
 
        Note that the proposal also has in the Returns section, "The
        va_copy function or macro..." but the draft has, "The va_copy
        macro..."
 
        Also, in other functions in the standard that have no return
        value, there simply is no Returns section.  The va_start,
        va_end and va_copy macros all heave a Returns section.
        Shouldn't this be consistent in the standard?
        (See feclearexcept(), fegetexceptflag(), feraiseexcept(),
        fegetenv()...)
 
Page 236, 7.12.1.4, Example
        In the new second example, the word "after" is misspelled
        "fater".
 
        Also in this first sentence has text left out. The draft has,
 
          "after the indicated number of arguments; fater f2 has
          been called again and passed to function f4."
 
        The proposal has,
 
          "after the indicated number of arguments; after f2 has been
          called once with the whole list, the trailing part of the
          list is gathered again and passed to function f4."
 
Page 236, 7.12.1.4, Example
        The line,
                "array[ptr_no++] = va_Arg(ap, char *);"
 
        has a capital A  va_arg() were it should be lower case:
 
                "array[ptr_no++] = va_arg(ap, char *);"
 
Page 236, 7.12.1.4, Example
        The first while loop has its terminating brace backwards
 
          "while (ptr_no < n_ptrs) {
                ...
          {
          va_end(ap);"
 
        Should be:
 
          "while (ptr_no < n_ptrs) {
                ...
          }
          va_end(ap);"
 
(N673)  adjustments to phases of translation
 
Page 8, 5.1.1.2, Paragraph #2
        The word "empty" is misspelled "empy".
 
Page 8, 5.1.1.2, Footnote 7
        The first physical source line is in the draft:
 
          "|\"
 
        It should be:
 
          "|\\\|"
 
Page 8, 5.1.1.2, Footnote 7
        The word "backslash" has its "s" and "h" reversed:
        "backslahs".
 
Page 8, 5.1.1.2, Footnote 7
        The first logical source line is in the draft:
 
          "|\|"
 
        It should be:
 
          "|\\|"
 
(N675)  Changes related to DRs 77, 143, 144, 146, 147, and 149
 
NOTE the paragraph numbers are messed up in section 6.1.2.4, see
page 31, paragraph 3 is missing.
 
Page 31, 6.1.2.4, Paragraph #2
        The change to the last sentence of this paragraph did not
        happen.
 
        The proposal says, "In subclause 6.1.2.4, change the last
        sentence of paragraph #2 to:
          The object exists, has a constant address, and retains its
          last-stored value throughout the execution of the entire
          program.(*)"
 
        But the draft still has the original sentence:
          "The object exists and retains its last-stored value
          throughout the execution of the entire program.(*)"
 
Page 32, 6.1.2.4, Paragraph #3(mislabeled as #4)
        The addition to this paragraph did not happen.
        The proposal says, "Add to the end of paragraph #3:
          During execution of the associated block, the object has a
          constant address."
 
Page 311, 7.14.3.4, Paragraph #3
        The word "equal" is misspelled as "euqal".
 
DR 143 in this proposal was changed by N729.  This proposal was not
reviewed here.
 
The rest of the changes that resulted from these DRs were incorporated
correctly.

 
(N683)	  VLA   The stage 3 document was N637

General Problem:
All examples with comments would benefit by lining up the comments
with tabs.

Detailed Problems:

Correct all the forward references to "variably modified (6.5.4)" and
  "variable length array (6.5.4.2)" to be "variably modified (6.5.5)"
  and "variable length array (6.5.5.2)" respectively.  List of places
  where one or both must be corrected:
        Page 32, 6.1.2.4 Storage duration of objects
        Page 69, 6.3.3.4 The sizeof operator
        Page 84, 6.4 Constant expressions
        Page 102, 6.5.5 Declarators
 
Page 36, 6.1.2.6, Compatible type and composite type, para #3, first bullet:
  Correct "IF" to "If".
 
Page 69, 6.3.3.4 The sizeof operator, example #3
  Correct "main ()" to be "int main()".
  Correct the function main to have a "return 0;".

Page 73, Clause 6.3.6, Forward references
	Clause number for "variable length array" is incorrect.
	It should be 6.5.5.2.

Page 83, Clause 6.4 Paragraph #6
	Three problems with this addition.  It is now:
	  "have a variable length array type of a parenthesized
	  name of such type,"
	It should be:
	  "have variable length array type or a parenthesized
	  name of such a type,"

Page 88, 6.5.2 Type specifiers, the example which was to be added to the
  end of this subclause is missing.  Add it, here it is  from N683 as
  amended by the June 97, London meeting minutes:
 
        All declarations of variably modified (VM) types must be declared at
        either block scope or function prototype scope.  Array objects
        declared with the "static" or "extern" storage class specifier cannot
        have a variable length array (VLA) type.  However, a object declared
        with the "static" storage class specifier can have a VM type (that
        is, a pointer to a VLA type).  Finally, all identifiers declared
        with a VM type must be ordinary identifiers, and can not, therefore,
        be members of structures or unions.
 
        extern int n;
        int A[n];                       /* Error - file scope VLA */
        extern int (*p2)[n];            /* Error - file scope VM */
        int B[100];                     /* OK - file scope but not VM */
 
        void fvla(int m, int C[m][m]) { /* OK - VLA with prototype scope */
           typedef int VLA[m][m];       /* OK - block scope typedef VLA */
                                        /* array size m evaluated now */
           struct tag {
              int (*y)[n];       /* Error - y is not an ordinary identifier */
              int z[n];          /* Error - z is not an ordinary identifier */
           };
           int D[m];                    /* OK - auto VLA */
           static int E[m];             /* Error - static block scope VLA */
           extern int F[m];             /* Error - F has linkage and is a VLA */
           int (*s)[m];                 /* OK - auto pointer to VLA */
           extern int (*r)[m]; /*Error - r has linkage and is a pointer to VLA*/
           static int (*q)[m] = &B; /* OK - q is a static block scope pointer to
 VLA */
 
           /* ... */
 
        }

Page 88, Clause 6.5.2,  Forward references
	Change #12 in N683 did not get added.

Page 102, Clause 6.5.5, Forward references
	Clause number for "variable length array" is incorrect.
	It should be 6.5.5.2.

Page 103, Clause 6.5.5.2, Paragraph #2

	Correct the spelling of "tyupe" to be "type"

	There is a sentence missing after the sentence ending with
	"is not a variable length array type." and before the sentence
	that starts with "If the size expression"

	That missing sentence is supposed to be:

	"Otherwise, the array type is a variable length array type."

Page 103, Clause 6.5.5.2, Paragraph #2
	The sentence that starts with "If the size expression", the
	word "express" should be "expression".

Page 104, clause 6.5.5.2, Example 3
	The second line has an "8" instead of an "*":
	int (8p)[4][n+1];

	The last comment line should have m==n+1, not m==m+1.

Page 106, Clause 6.5.5.3, 1st example
	The second paragraph has an extraneous "11" preceding it.

Page 107, Clause 6.5.5.3, 4th example
	The comment is missing the word "with".
	The comment should start on the same line as the assignment:
		a[i][j] += x;	// a is a pointer to a VLA with
				//n*m+300 elements

Page 108, Clause 6.5.7 Paragraph #3
	Incorrect reference.  "in the way described in 6.5.4."
	Should be   "in the way described in 6.5.5."

Page 110, Clause 6.5.7 Example #5
	The comment was left out of the example. It should be:
	typedef int A[n];	/* OK - declared with block scope */

Page 110, Clause 6.5.7 Example #6
	There is an extra word "if" in the second sentence.
	"However, if the..." should be
	"However, the ..."

Page 111, Clause 6.5.7 Example #6
	In the // comments, the variable name should be in bold font.

Page 111, Clause 6.5.8 Paragraph #3
	The sentence that was changed could be reworded so it is less
	confusing.  The current sentence is:

	"The type of the entity to be initialized shall be an object
	type that is not a variable length array type, or an array of
	unknown size."

	This make it sound as if an array of unknown size cannot be
	initialized.  How about:

	"The type of the entity to be initialized shall be an array
	of unknown size or an object type that is not a variable
	length array type."

Page 124, 6.6.6.1, Example #2
	The word "objects" is misspelled "oibjects" in the first
	sentence.

Page 230, 7.10.2.1, Example
	The second and third comments need to have the variable names
	"a" and "b" in bold font.

	In function g(), the call to function h() is bungled
		h9n);
	Should be
		h(n);

	Since the comments were changed to // comments, periods were
	added.  The third comment is missing this period.

Page 406, Language Syntax Summary
	This summary has not been updated!

(N685)
        Third bullet is missing the bullet number.  Should read
 
        3.  The following is not a valid fragment ...

(N688)	
Page 393, 7.20.3
	The last sentence is terminated prematurely.  It is missing
	the text, " may be added to the macros defined in the
	<inttypes.h> header".

(N696)
Page 147, 6.8.6, Paragraph #1
	The first paragraph was almost entirely left out and the
	second paragraph was added in its place.  The draft has,

	  "A preprocessing directive of the form

		# pragma pp-tokens-opt new-line

	  where the preprocessing token STDC does not immediately 
	  follow the pragma on the directive, then no macro
	  replacements are performed on the directive, and the 
	  directive shall have one of the following forms whose
	  meaning is described elsewhere: "
	
	The proposal has:

	  "A preprocessing directive of the form

		# pragma pp-tokens-opt new-line

	  where the preprocessing token STDC does not immediately 
	  follow the pragma on the directive causes the implementation
	  to behave in an implementation-defined manner.  Any such
	  pragma that is not recognized by the implementation is
	  ignored.

	  If the preprocessing token STDC does immediately follow the
	  pragma on the directive, then no macro replacements are
	  performed on the directive, and the directive shall have one
	  of the following forms whose meaning is described elsewhere: "

(N701)
Page 151, 7.1.1, Definitions of terms, para #3, footnote #121
  See N701 for the changes to footnote #108 (which is #121 in 11
  Pre-1), all the wide char versions of the functions have been left
  out.

Page 269, 7.13.6.12, The vfscanf function, para #2
  This paragraph is suppose to end with a reference to footnote #203.

Page 269, 7.13.6.13, The vscanf function, para #2
  This paragraph is suppose to end with a reference to footnote #203.

Page 270, 7.13.6.14, The vsscanf function, para #2
  This paragraph is suppose to end with a reference to footnote #203.

Page 361, 7.19.2.7, The vfwprintf funcition, footnote 253
  Correct the spelling of "vwfscanf" to be "vfwscanf".
  Change "unspecified" to "indeterminate".

Page 364, 7.19.2.x, The vswscanf function, it is missing, obtain it from N701.

(N705, DR 145)
Page 84, 6.4 Constant expressions, para #9
  Change "designator; it" to "designator.  It".
  Change "or implicitly, by the use" to "or implicitly by the use".


(N705, DR162)
Page 334, 7.16.3, Time conversion functions, para #1
  Change "functions return a pointer in one of two static objects" to
    "functions each return a pointer in one of two types of static objects".

(N707)
Page 139  6.8.3 Macro replacement paragraph 4
        Change
        number of paramters  to  number of parameters
 
 
Page 140 6.8.3 Macro replacement Add to paragraph 10
 
                # define identifier lparen ... ) replacement-list new-line
                # define identifier lparen identifier-list , ... )
                                           replacement-list new-line
 
Page 140 6.8.3 Macro replacement paragraph 12
 
        Change
        including any separate comma preprocessing tokens
        to
        including any separating comma preprocessing tokens
 
        signle itme:  to  single item:
 
        The number of arguments is one more than the number of
        parameters in the macro definition (excluding the ...).
        to
        The number of arguments so combined is such that, following
        merger, the number of arguments is one more than the number
        of parameters in the macro definition (excluding the ...).
 
Page 140 6.8.3.1 Argument substitution paragraph 2
 
        Change
	An idenfifier    to An identifier
        shall be trated  to shall be treated
 
Page 146 6.8.3.5 Scope of macro definitions Example 7.
        Change

        results in  to  results in:
 
        "X = %d\"  to "X = %d\n"

(N693)
Page 225, 7.9 Type-generic math <tgmath.h>, para #1
  Correct the spelling of "defineds" to "defines"
  Correct "longdouble" to be "long double".
  Correct "corrspnding real type and tyupe-domain" to be
          "corresponding real type and type-domain".

Page 225, 7.9.1 Type-generic macros, para #2
  Correct "invokles" to be "invokes".
  Correct "paramters" to be "parameters".
  Correct "correspinding" to be "corresponding".

Page 225, 7.9.1 Type-generic macros, para #3
  Correct "anme" to be "name".
  In the table which follows in the <complex.h> column correct "cfabs"
to be "cabs".
  The last sentence of the paragraph,  "The corresponding type-generic
macro for fabs and cabs is fabs.", was erroneously moved into a footnote
(175).  The sentence is not an example but the specification for a case
not covered by the general scheme, hence should remain in the main text.

Page 225, 7.9.1, footnote 174
  Correct "incomparible" to be "incompatible".

Page 226, 7.9.1 Type-generic macros, para #4 
  Correct "involes" to be "invokes".

Page 226, 7.9.1 Type-generic macros, para #6
  Correct "functionl otherwise" to be "function; otherwise".

Page 227, 7.9.1 Type-generic macros, para #7
  Align the table items.

Page 227, 7.9.1 Type-generic macros, para #8
  Change "The use of the macro with any real of complex argument" to
    "Use of the macro with any real or complex argument".

Page 227, 7.9.1 Type-generic macros, para #9
  Correct "shouwn" to be "shown".
  Correct "enxtafterx(f, ld)" to be "nextafterx(f, ld)".
  Add an entry to the table, just after the nextafterx entry:
        copysign(n, ld)         copysignl(n, ld)

P457, G.7 <tgmath.h>, para #1
  Correct the first word of the second sentence from "if" to be "If".

P457, G.7 <tgmath.h>, para #2
  Add space before the list/table.
  Line up the LHS's, "=" signs, and RHS's in the list.
  Correct "cost(i*y)" to be "cosh(i*y)".
  Correct "asign" to be "asin".


(N694)
The edits in enhancements 1 and 2 are missing entirely.

Page 431, F.8.2, 0 * x --> 0.0 bullet
	Replace "negative" with "negative-signed".  (The proposal said
	"-0", which is narrower than need be; "negative" I assume was an editor
	change to correct this, but might not be interpreted to include -0;
	"negative-signed" is a better correction that is unambiguous and
	consistent with wording elsewhere.)

The edits in enhancement 4 are missing, except for the amendment from
the meeting.

Page 188, 7.7 [7] Mathematics <math.h>
	Replace "multiple" with "multiply".
	The edits in enhancements 1 and 2 are missing entirely.

Page 431, F.8.2, 0 * x --> 0.0 bullet
	Replace "negative" with "negative-signed".  (The proposal said
	"-0", which is narrower than need be; "negative" I assume was an editor
	change to correct this, but might not be interpreted to include -0;
	"negative-signed" is a better correction that is unambiguous and
	consistent with wording elsewhere.)

	The edits in enhancement 4 are missing, except for the amendment from
	the meeting.

Page 188, 7.7 [7] Mathematics <math.h>
	Replace "multiple" with "multiply".

(N691)
Page 37, 6.1.2.7.1, General, para #1
  Correct "refersented" to be "represented".

Page 38, 6.1.2.7.1, General, para #5
  Correct "beome" to be "become".

Page 38, 6.1.2.7.1, General, add missing last paragraph from N691:
  Where an operator is applied to a value whose object representation
  includes padding bits but which is not a trap representation, the
  operator shall ignore those bits for the purpose of determining the
  value of the result.  If the result is stored in an object that has
  padding bits, it is unspecified how those padding bits are generated
  - they might not be related to the padding bits of the operands - but
  a trap representation shall not be generated.

Page 38, 6.1.2.7.2, Integral types, para #2
  Correct "bit it one" to "bit is one".


(N695)
Page 8 5.1.1.2 Translation phase, Paragraph 1
	Change
	a preprocessing translation is called
	to
	a preprocessing translation unit is called

Page 2 Clause 3, Paragraph 2, sentence 2
	Replase with
	Other terms are defined where they appear in italic type or
	by being on the left side of a syntax rule.

(N721)
Page 66 6.3.3.2 Address and indirection operators, Paragraph 1

	Change 
	shall be a function designator the result
	to
	shall be a function designator, the result

Page 66 6.3.3.2 Address and indirection operators, Paragraph 3

	Change 
	nor the & operare
	to
	nor the & operator

Page 67 6.3.3.2 Address and indirection operators, Footnote 64

	Change
	pointyer  to pointer
	
Page 72 6.3.6 Additive operators, Paragraph 8 - last sentence

	Change
	operand of the unary * operator
	to
	operand of a unary * operator
(N722)

Page 131, 6.7.1 Function definitions, Example 2

	The change to the example was not applied.

	Change 
	g(int (*funcp)(void))
	to
	void  g(int (*funcp)(void))

	g(int func(void))
	go
	void  g(int func(void))

(N723)

Page 73, 6.3.7, Bitwise shift operators, para #4
  Correct "if E1 has type or LLONG_MAX" to be
    "if E1 has type long int), or LLONG_MAX".

(N717)

Problems:

Page 9, 5.1.1.2 Paragraph #2
	The first sentence is not as given in the proposal.  The
	proposal states:

	"A universal-character-name shall not specify a character
	short identifier in the range 0000 through 0020 or 007F
	through 009F, inclusive."

	But the draft has:

	"A universal-character-name shall not specify a hexadecimal
	value less than 0x20 or in the range 0x7F to 0x9F inclusive.

Page 28, 6.1.2 Paragraph #2
	The reference to ISO 10646 differs from what is in N717:
	"in ISO 10646-1 falls"

	The proposal has:
	"in ISO 10646 falls"

Page 28 6.1.2 Footnote
	The word "forming" is misspelled "formaing".

Page 458, Annex H
	The annex states that it is unchanged from ISO/IEC PDTR 10176,
	but the code values in the draft do not match those in the
	proposal.
	
(N728)
	 
Page 202, 7.7.6.15 The scalbnl function
	Remove subclause 7.7.6.15.  (It's obsoleted by N728.)
	    
Page 226, 7.9.1 [5] Type-generic macros
	Add scalbln to the list in [5].

(N733)

Page 337 7.16.3.5 The strftime function Paragraph #3

	Change
	%T   is equivalent to "%H-%M-%S" (the ISO 8601 time format).
	to
	%T   is equivalent to "%H:%M:%S" (the ISO 8601 time format).

(N734)
 
Page 304, 7.14.1.5 [10] The strtod function
	Append to the last sentence in [10]: "; whether errno acquires the
	value ERANGE is implementation defined."
    
Page 371, 7.19.4.1.1 [10] The wcstod function  
	Append to the last sentence in [10]: "; whether errno acquires the
	value ERANGE is implementation defined."
       
(N740)

Page 119 6.6.2 Paragraph #2
        The last sentence of this paragraph is:
 
        "within each declaration in the order their declarators
        appear in the translation unit."
 
        This should be:
 
        "within each declaration in the order that the declarators
        appear."
 
Page 123 6.6.5.3 Paragraph #2
        The word "ause-1" is missing a leading "cl". -> "clause-1"
 
        Also, the word "can" in the proposal is "may" in the draft.
 
        Also, the wording in the proposal was changed in the second
        sentence.  The proposal has,
 
        "If either or both are an expression, they are evaluated as a
        void expression."
 
        The draft has,
 
        "Each is evaluated as a void expression."
 
Page 123, 6.6.5.3 Footnote 106
        The first part of the footnote has words that were left out.
        The draft has,
 
        "106. Thus, clause-1 specifies initialization for the loop;"
 
        This is supposed to be:
 
        "106. Thus, clause-1 specifies initialization for the loop,
        possibly declaring one or more variables for use in the loop;"

(N741)

Page 99-100. 6.5.4
	In the text on these two pages, the word "inline" should be in
	bold font (as all keywords are).

Page 99, 6.5.4 Paragraph #6
	This line is the first line of the Semantics section in the
	proposal.  But the draft has moved it to be the last line of
	the Constraints section.

	"The inline function specifier shall not appear in a
	declaration of main."

Page 99, 6.5.4 Paragraph #7 second sentence
	The sentence and the associated footnote were altered from
	what is in the proposal.  The proposal has:

	  "Making a function an inline function suggests that calls to
	  the function be as fast as possible (by, for example, using an
	  alternative to the usual function call mechanism known as
	  ''inline substitution''.94 ...

	  94. Inline substitution is not ..."

	The draft has:

	  "Making a function an inline functon suggests that calls to
	  the function be as fast as possible94 ...

	  94. By using, for example, an alternative to the usual
	  function call mechanism known as ''inline substitution''.
	  Inline substitution is no ..."

Page 99, 6.5.4 Footnote #94
	Note that the footnote in the draft has "is no textual" and
	it is in the proposal as "is not textual".

Page 99, 6.5.4 Footnote #94
	The London minutes say that "within the function" is to be
	changed to "within the body of the function".  This change did
	not happen:

	"expansion of a macro used within the function uses the.."

Page 100, 6.5.4 Paragraph #8
	The first sentence starts incorrectly;
	"An function" should be "Any function.

	The fifth sentence has the word "an" repeated.

	The sixth sentence has an entire line of text missing.
	"an alternative to implement and call to the function..."
	but the proposal has:
	"an alternative to an external definition, which a translator
	may use to implement any call to the function..."
	Notive the word "and" in the draft should be "any".

Page 100, 6.5.4 Example
	The last comment, "A translator may perform inline
	substitution" would like nicer if it were all on one line, as
	in the proposal.

(N698)

Page 33, 6.1.2.5, Paragraph #5
	The London minutes indicate that the last sentence of this
	paragraph become a new paragraph.  This did not happen.

Page 34, 6.1.2.5, Paragraph #17
	The London minutes indicate this sentence should be:
	"..bits it uses to represent values excluding any sign and
	padding bits."
	but the draft has:
	"..bits it uses to represent values excluding the sign bit (if
	any) and any padding bits."

Page 52, 6.2.1.1 Paragraph #1
	In the forth bullet, the word "which" is misspelled "wchi".

Page 53, 6.2.1.1 Paragraph #2
	The first line of this page has the hyphenated word
	"bit-field" misspelled "but-field".

Page 53, 6.2.1.1 Paragraph #3
	The word "arithmetic" was added in this sentence.  It is not
	in the proposal and is not called out in the minutes.

Page 55, 6.2.1.7, Paragraph #1
	The sentence that starts "Then the following rules are.."
	is not complete in the draft.  The proposal has:
	"Then the following rules are applied to the promoted operands"
	but the draft has the last three words left out.

(Misc)

Page 31, 6.1.2.4, Storage duration of objects, paragraphs are numbered 1, 2, 4.
  Paragraph 4 should be numbered 3.

Pages 34/35, footnote 31 split across these two pages, should be on one page.

Page 267, footnote 203 is on the wrong page, it should be on page 266.

The following tables/formulas need work:

Page 446, G.5.1 Multiplicative operators, para #2 and para #3
Page 450, G.5.2 Additive operators, para #2
Page 451, G6 <complex.h>, para #6 and para #7

Page 201, 7.7.6.11 The logb function, para #2
  Correct the type face for "logb" in the formula.

Page 202, 7.7.6.14 The scalbln function, para #2
  Correct "fucntion" to be "function".

Page 208, 7.7.9.9 The llround function, para #2
  Correct "equivalent to the lroundtol function" to
	  "equivalent to the lround function"