Browse Source

Clarify docs wrt. table initializer handling for VLA/VLS.

Mike Pall 14 years ago
parent
commit
3168d9aa59
1 changed files with 6 additions and 1 deletions
  1. 6 1
      doc/ext_ffi_semantics.html

+ 6 - 1
doc/ext_ffi_semantics.html

@@ -506,6 +506,11 @@ with the consecutive table elements, starting at either index
 all the remaining elements. Otherwise all remaining uninitialized
 all the remaining elements. Otherwise all remaining uninitialized
 elements are filled with zero bytes.</li>
 elements are filled with zero bytes.</li>
 
 
+<li>The above logic only applies to arrays with a known fixed size.
+A VLA is only initialized with the element(s) given in the table.
+Depending on the use case, you may need to explicitly add a
+<tt>NULL</tt> or <tt>0</tt> terminator to a VLA.</li>
+
 <li>If the table has a non-empty hash part, a
 <li>If the table has a non-empty hash part, a
 <tt>struct</tt>/<tt>union</tt> is initialized by looking up each field
 <tt>struct</tt>/<tt>union</tt> is initialized by looking up each field
 name (as a string key) in the table. Each non-<tt>nil</tt> value is
 name (as a string key) in the table. Each non-<tt>nil</tt> value is
@@ -518,7 +523,7 @@ or <tt>[1]</tt>. This process stops at the first <tt>nil</tt> table
 element.</li>
 element.</li>
 
 
 <li>Uninitialized fields of a <tt>struct</tt> are filled with zero
 <li>Uninitialized fields of a <tt>struct</tt> are filled with zero
-bytes.</li>
+bytes, except for the trailing VLA of a VLS.</li>
 
 
 <li>Initialization of a <tt>union</tt> stops after one field has been
 <li>Initialization of a <tt>union</tt> stops after one field has been
 initialized. If no field has been initialized, the <tt>union</tt> is
 initialized. If no field has been initialized, the <tt>union</tt> is