… | |
… | |
133 | assert (len >= 0); // shield against broken vsnprintf's |
133 | assert (len >= 0); // shield against broken vsnprintf's |
134 | |
134 | |
135 | // was enough room available |
135 | // was enough room available |
136 | if (ptr + len < end) |
136 | if (ptr + len < end) |
137 | { |
137 | { |
138 | alloc (len); |
138 | ptr += len; |
139 | return; |
139 | return; |
140 | } |
140 | } |
141 | } |
141 | } |
142 | |
142 | |
143 | // longer, try harder |
143 | // longer, try harder |
144 | va_list ap; |
144 | va_list ap; |
145 | va_start (ap, format); |
145 | va_start (ap, format); |
146 | vsnprintf (force (len + 1), len + 1, format, ap); |
146 | vsnprintf (force (len + 1), len + 1, format, ap); |
147 | va_end (ap); |
147 | va_end (ap); |
148 | |
148 | |
149 | alloc (len); |
149 | ptr += len; |
150 | } |
150 | } |
151 | |
151 | |
152 | // simply return a mask with "bits" bits set |
152 | // simply return a mask with "bits" bits set |
153 | inline uint64 |
153 | inline uint64 |
154 | m (int b) |
154 | m (int b) |