webruby 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (258) hide show
  1. checksums.yaml +4 -4
  2. data/lib/webruby/rake/mruby.rake +1 -0
  3. data/modules/emscripten/AUTHORS +7 -0
  4. data/modules/emscripten/LICENSE +26 -0
  5. data/modules/emscripten/emcc +58 -20
  6. data/modules/emscripten/emlink.py +2 -265
  7. data/modules/emscripten/emscripten.py +38 -18
  8. data/modules/emscripten/scons-tools/emscripten.py +11 -6
  9. data/modules/emscripten/scons-tools/llvm.py +4 -3
  10. data/modules/emscripten/src/analyzer.js +32 -13
  11. data/modules/emscripten/src/embind/embind.js +13 -13
  12. data/modules/emscripten/src/embind/emval.js +8 -7
  13. data/modules/emscripten/src/intertyper.js +10 -0
  14. data/modules/emscripten/src/jsifier.js +28 -6
  15. data/modules/emscripten/src/library.js +2949 -1322
  16. data/modules/emscripten/src/library_browser.js +27 -23
  17. data/modules/emscripten/src/library_egl.js +7 -2
  18. data/modules/emscripten/src/library_gl.js +15 -2
  19. data/modules/emscripten/src/library_glut.js +1 -1
  20. data/modules/emscripten/src/library_jansson.js +1 -1
  21. data/modules/emscripten/src/library_openal.js +464 -132
  22. data/modules/emscripten/src/library_path.js +134 -0
  23. data/modules/emscripten/src/library_sdl.js +222 -50
  24. data/modules/emscripten/src/modules.js +22 -5
  25. data/modules/emscripten/src/parseTools.js +13 -2
  26. data/modules/emscripten/src/postamble.js +60 -34
  27. data/modules/emscripten/src/preamble.js +67 -18
  28. data/modules/emscripten/src/relooper/Relooper.cpp +1 -1
  29. data/modules/emscripten/src/runtime.js +12 -2
  30. data/modules/emscripten/src/settings.js +869 -826
  31. data/modules/emscripten/src/shell.js +63 -51
  32. data/modules/emscripten/src/utility.js +6 -0
  33. data/modules/emscripten/system/include/bsd/sys/mman.h +1 -1
  34. data/modules/emscripten/system/include/emscripten/bind.h +28 -28
  35. data/modules/emscripten/system/include/libc/math.h +8 -0
  36. data/modules/emscripten/system/include/libc/sys/signal.h +3 -1
  37. data/modules/emscripten/system/include/libc/sys/stat.h +2 -1
  38. data/modules/emscripten/system/include/libc/sys/types.h +4 -0
  39. data/modules/emscripten/system/include/libcxx/CREDITS.TXT +24 -0
  40. data/modules/emscripten/system/include/libcxx/__bit_reference +27 -8
  41. data/modules/emscripten/system/include/libcxx/__config +62 -15
  42. data/modules/emscripten/system/include/libcxx/__debug +5 -1
  43. data/modules/emscripten/system/include/libcxx/__functional_03 +24 -24
  44. data/modules/emscripten/system/include/libcxx/__functional_base +22 -4
  45. data/modules/emscripten/system/include/libcxx/__hash_table +566 -54
  46. data/modules/emscripten/system/include/libcxx/__locale +11 -3
  47. data/modules/emscripten/system/include/libcxx/__split_buffer +6 -6
  48. data/modules/emscripten/system/include/libcxx/__std_stream +58 -30
  49. data/modules/emscripten/system/include/libcxx/__tree +58 -51
  50. data/modules/emscripten/system/include/libcxx/__tuple +9 -9
  51. data/modules/emscripten/system/include/libcxx/algorithm +223 -13
  52. data/modules/emscripten/system/include/libcxx/array +18 -17
  53. data/modules/emscripten/system/include/libcxx/atomic +15 -5
  54. data/modules/emscripten/system/include/libcxx/cctype +2 -2
  55. data/modules/emscripten/system/include/libcxx/chrono +131 -36
  56. data/modules/emscripten/system/include/libcxx/cmath +41 -36
  57. data/modules/emscripten/system/include/libcxx/complex +49 -49
  58. data/modules/emscripten/system/include/libcxx/cstdio +2 -2
  59. data/modules/emscripten/system/include/libcxx/cstdlib +5 -5
  60. data/modules/emscripten/system/include/libcxx/cstring +2 -2
  61. data/modules/emscripten/system/include/libcxx/cwchar +22 -13
  62. data/modules/emscripten/system/include/libcxx/deque +27 -14
  63. data/modules/emscripten/system/include/libcxx/forward_list +36 -35
  64. data/modules/emscripten/system/include/libcxx/fstream +16 -0
  65. data/modules/emscripten/system/include/libcxx/functional +348 -23
  66. data/modules/emscripten/system/include/libcxx/future +66 -0
  67. data/modules/emscripten/system/include/libcxx/ios +27 -0
  68. data/modules/emscripten/system/include/libcxx/istream +2 -4
  69. data/modules/emscripten/system/include/libcxx/iterator +17 -9
  70. data/modules/emscripten/system/include/libcxx/limits +2 -2
  71. data/modules/emscripten/system/include/libcxx/list +165 -105
  72. data/modules/emscripten/system/include/libcxx/locale +154 -43
  73. data/modules/emscripten/system/include/libcxx/map +165 -224
  74. data/modules/emscripten/system/include/libcxx/memory +113 -54
  75. data/modules/emscripten/system/include/libcxx/random +2 -29
  76. data/modules/emscripten/system/include/libcxx/readme.txt +1 -1
  77. data/modules/emscripten/system/include/libcxx/regex +60 -15
  78. data/modules/emscripten/system/include/libcxx/sstream +124 -40
  79. data/modules/emscripten/system/include/libcxx/string +345 -182
  80. data/modules/emscripten/system/include/libcxx/support/win32/limits_win32.h +3 -3
  81. data/modules/emscripten/system/include/libcxx/support/win32/locale_win32.h +15 -2
  82. data/modules/emscripten/system/include/libcxx/support/win32/math_win32.h +3 -3
  83. data/modules/emscripten/system/include/libcxx/support/win32/support.h +10 -11
  84. data/modules/emscripten/system/include/libcxx/thread +2 -2
  85. data/modules/emscripten/system/include/libcxx/tuple +134 -65
  86. data/modules/emscripten/system/include/libcxx/type_traits +232 -24
  87. data/modules/emscripten/system/include/libcxx/unordered_map +314 -161
  88. data/modules/emscripten/system/include/libcxx/unordered_set +160 -2
  89. data/modules/emscripten/system/include/libcxx/utility +225 -40
  90. data/modules/emscripten/system/include/libcxx/vector +52 -57
  91. data/modules/emscripten/system/include/net/if.h +20 -1
  92. data/modules/emscripten/system/include/net/netinet/in.h +69 -5
  93. data/modules/emscripten/system/include/netdb.h +36 -0
  94. data/modules/emscripten/system/include/sys/ioctl.h +55 -3
  95. data/modules/emscripten/system/include/sys/select.h +2 -0
  96. data/modules/emscripten/system/include/sys/sendfile.h +16 -0
  97. data/modules/emscripten/system/include/sys/socket.h +181 -35
  98. data/modules/emscripten/system/lib/dlmalloc.c +10 -12
  99. data/modules/emscripten/system/lib/libc/musl/src/stdlib/ecvt.c +19 -0
  100. data/modules/emscripten/system/lib/libc/musl/src/stdlib/fcvt.c +25 -0
  101. data/modules/emscripten/system/lib/libc/musl/src/stdlib/gcvt.c +8 -0
  102. data/modules/emscripten/system/lib/libcextra.symbols +3 -0
  103. data/modules/emscripten/system/lib/libcxx/CREDITS.TXT +24 -0
  104. data/modules/emscripten/system/lib/libcxx/debug.cpp +11 -9
  105. data/modules/emscripten/system/lib/libcxx/exception.cpp +9 -0
  106. data/modules/emscripten/system/lib/libcxx/hash.cpp +6 -0
  107. data/modules/emscripten/system/lib/libcxx/iostream.cpp +4 -4
  108. data/modules/emscripten/system/lib/libcxx/locale.cpp +91 -42
  109. data/modules/emscripten/system/lib/libcxx/readme.txt +1 -1
  110. data/modules/emscripten/system/lib/libcxx/stdexcept.cpp +1 -1
  111. data/modules/emscripten/system/lib/libcxx/string.cpp +332 -491
  112. data/modules/emscripten/system/lib/libcxx/support/win32/locale_win32.cpp +4 -2
  113. data/modules/emscripten/system/lib/libcxx/support/win32/support.cpp +140 -41
  114. data/modules/emscripten/system/lib/libcxx/symbols +9 -256
  115. data/modules/emscripten/system/lib/libcxx/system_error.cpp +3 -0
  116. data/modules/emscripten/system/lib/libcxx/thread.cpp +16 -3
  117. data/modules/emscripten/system/lib/libcxx/typeinfo.cpp +12 -2
  118. data/modules/emscripten/third_party/stb_image.c +4673 -0
  119. data/modules/emscripten/tools/asm_module.py +273 -0
  120. data/modules/emscripten/tools/exec_llvm.py +2 -2
  121. data/modules/emscripten/tools/file_packager.py +36 -16
  122. data/modules/emscripten/tools/find_bigfuncs.py +9 -9
  123. data/modules/emscripten/tools/js-optimizer.js +485 -131
  124. data/modules/emscripten/tools/js_optimizer.py +22 -15
  125. data/modules/emscripten/tools/merge_asm.py +26 -0
  126. data/modules/emscripten/tools/nativize_llvm.py +2 -2
  127. data/modules/emscripten/tools/settings_template_readonly.py +1 -1
  128. data/modules/emscripten/tools/shared.py +63 -20
  129. data/modules/emscripten/tools/split_asm.py +30 -0
  130. data/modules/emscripten/tools/test-js-optimizer-asm-outline1-output.js +686 -0
  131. data/modules/emscripten/tools/test-js-optimizer-asm-outline1.js +263 -0
  132. data/modules/emscripten/tools/test-js-optimizer-asm-outline2-output.js +747 -0
  133. data/modules/emscripten/tools/{test-js-optimizer-asm-outline.js → test-js-optimizer-asm-outline2.js} +1 -1
  134. data/modules/emscripten/tools/test-js-optimizer-asm-outline3-output.js +28 -0
  135. data/modules/emscripten/tools/test-js-optimizer-asm-outline3.js +30 -0
  136. data/modules/emscripten/tools/test-js-optimizer-asm-pre-output.js +4 -4
  137. data/modules/mruby/AUTHORS +1 -0
  138. data/modules/mruby/README.md +4 -2
  139. data/modules/mruby/build_config.rb +6 -6
  140. data/modules/mruby/doc/mrbgems/README.md +4 -4
  141. data/modules/mruby/examples/mrbgems/c_and_ruby_extension_example/mrbgem.rake +1 -1
  142. data/modules/mruby/examples/mrbgems/c_extension_example/mrbgem.rake +1 -1
  143. data/modules/mruby/examples/mrbgems/ruby_extension_example/mrbgem.rake +1 -1
  144. data/modules/mruby/include/mrbconf.h +3 -0
  145. data/modules/mruby/include/mruby/array.h +2 -2
  146. data/modules/mruby/include/mruby/class.h +4 -4
  147. data/modules/mruby/include/mruby/compile.h +1 -0
  148. data/modules/mruby/include/mruby/data.h +1 -1
  149. data/modules/mruby/include/mruby/hash.h +2 -2
  150. data/modules/mruby/include/mruby/irep.h +3 -2
  151. data/modules/mruby/include/mruby/proc.h +1 -1
  152. data/modules/mruby/include/mruby/range.h +1 -1
  153. data/modules/mruby/include/mruby/string.h +2 -2
  154. data/modules/mruby/include/mruby/value.h +43 -26
  155. data/modules/mruby/include/mruby.h +10 -2
  156. data/modules/mruby/minirake +2 -2
  157. data/modules/mruby/mrbgems/mruby-array-ext/mrbgem.rake +1 -1
  158. data/modules/mruby/mrbgems/mruby-bin-mirb/mrbgem.rake +4 -1
  159. data/modules/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +32 -0
  160. data/modules/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +1 -1
  161. data/modules/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +13 -5
  162. data/modules/mruby/mrbgems/mruby-enum-ext/mrbgem.rake +1 -1
  163. data/modules/mruby/mrbgems/mruby-enum-ext/test/enum.rb +10 -11
  164. data/modules/mruby/mrbgems/mruby-eval/mrbgem.rake +1 -1
  165. data/modules/mruby/mrbgems/mruby-exit/mrbgem.rake +4 -0
  166. data/modules/mruby/mrbgems/mruby-exit/src/mruby-exit.c +24 -0
  167. data/modules/mruby/mrbgems/mruby-fiber/mrbgem.rake +1 -1
  168. data/modules/mruby/mrbgems/mruby-fiber/src/fiber.c +4 -2
  169. data/modules/mruby/mrbgems/mruby-hash-ext/mrbgem.rake +1 -1
  170. data/modules/mruby/mrbgems/mruby-hash-ext/test/hash.rb +5 -7
  171. data/modules/mruby/mrbgems/mruby-math/mrbgem.rake +1 -1
  172. data/modules/mruby/mrbgems/mruby-numeric-ext/mrbgem.rake +1 -1
  173. data/modules/mruby/mrbgems/mruby-numeric-ext/test/numeric.rb +2 -2
  174. data/modules/mruby/mrbgems/mruby-object-ext/mrbgem.rake +1 -1
  175. data/modules/mruby/mrbgems/mruby-object-ext/src/object.c +3 -3
  176. data/modules/mruby/mrbgems/mruby-object-ext/test/nil.rb +3 -3
  177. data/modules/mruby/mrbgems/mruby-object-ext/test/object.rb +1 -1
  178. data/modules/mruby/mrbgems/mruby-objectspace/mrbgem.rake +1 -1
  179. data/modules/mruby/mrbgems/mruby-objectspace/test/objectspace.rb +36 -37
  180. data/modules/mruby/mrbgems/mruby-print/mrbgem.rake +1 -1
  181. data/modules/mruby/mrbgems/mruby-proc-ext/mrbgem.rake +1 -1
  182. data/modules/mruby/mrbgems/mruby-proc-ext/test/proc.rb +8 -8
  183. data/modules/mruby/mrbgems/mruby-random/mrbgem.rake +1 -1
  184. data/modules/mruby/mrbgems/mruby-range-ext/mrbgem.rake +1 -1
  185. data/modules/mruby/mrbgems/mruby-range-ext/test/range.rb +6 -6
  186. data/modules/mruby/mrbgems/mruby-sprintf/mrbgem.rake +1 -1
  187. data/modules/mruby/mrbgems/mruby-string-ext/mrbgem.rake +1 -1
  188. data/modules/mruby/mrbgems/mruby-string-ext/test/string.rb +6 -6
  189. data/modules/mruby/mrbgems/mruby-struct/mrbgem.rake +1 -1
  190. data/modules/mruby/mrbgems/mruby-symbol-ext/mrbgem.rake +1 -1
  191. data/modules/mruby/mrbgems/mruby-symbol-ext/test/symbol.rb +2 -2
  192. data/modules/mruby/mrbgems/mruby-time/mrbgem.rake +1 -1
  193. data/modules/mruby/mrbgems/mruby-time/src/time.c +2 -8
  194. data/modules/mruby/mrbgems/mruby-toplevel-ext/mrbgem.rake +1 -1
  195. data/modules/mruby/mrbgems/mruby-toplevel-ext/test/toplevel.rb +10 -10
  196. data/modules/mruby/mrblib/class.rb +15 -9
  197. data/modules/mruby/mrblib/string.rb +12 -0
  198. data/modules/mruby/src/array.c +4 -3
  199. data/modules/mruby/src/class.c +13 -8
  200. data/modules/mruby/src/codegen.c +9 -8
  201. data/modules/mruby/src/error.c +7 -5
  202. data/modules/mruby/src/error.h +1 -0
  203. data/modules/mruby/src/etc.c +1 -1
  204. data/modules/mruby/src/gc.c +163 -128
  205. data/modules/mruby/src/kernel.c +43 -15
  206. data/modules/mruby/src/numeric.c +9 -7
  207. data/modules/mruby/src/object.c +1 -1
  208. data/modules/mruby/src/parse.y +37 -19
  209. data/modules/mruby/src/range.c +10 -24
  210. data/modules/mruby/src/state.c +2 -6
  211. data/modules/mruby/src/string.c +0 -9
  212. data/modules/mruby/src/variable.c +2 -2
  213. data/modules/mruby/src/vm.c +12 -6
  214. data/modules/mruby/tasks/mrbgem_spec.rake +7 -0
  215. data/modules/mruby/tasks/mrbgems.rake +2 -1
  216. data/modules/mruby/tasks/mrbgems_test.rake +1 -1
  217. data/modules/mruby/tasks/mruby_build.rake +4 -3
  218. data/modules/mruby/tasks/mruby_build_commands.rake +6 -1
  219. data/modules/mruby/tasks/mruby_build_gem.rake +2 -2
  220. data/modules/mruby/tasks/toolchains/androideabi.rake +2 -0
  221. data/modules/mruby/test/assert.rb +2 -2
  222. data/modules/mruby/test/t/argumenterror.rb +3 -3
  223. data/modules/mruby/test/t/array.rb +55 -55
  224. data/modules/mruby/test/t/basicobject.rb +1 -1
  225. data/modules/mruby/test/t/bs_block.rb +12 -12
  226. data/modules/mruby/test/t/class.rb +21 -21
  227. data/modules/mruby/test/t/enumerable.rb +18 -18
  228. data/modules/mruby/test/t/exception.rb +20 -20
  229. data/modules/mruby/test/t/false.rb +3 -3
  230. data/modules/mruby/test/t/float.rb +40 -40
  231. data/modules/mruby/test/t/gc.rb +10 -10
  232. data/modules/mruby/test/t/hash.rb +41 -41
  233. data/modules/mruby/test/t/indexerror.rb +2 -2
  234. data/modules/mruby/test/t/integer.rb +41 -41
  235. data/modules/mruby/test/t/kernel.rb +33 -33
  236. data/modules/mruby/test/t/literals.rb +82 -82
  237. data/modules/mruby/test/t/localjumperror.rb +1 -1
  238. data/modules/mruby/test/t/module.rb +170 -31
  239. data/modules/mruby/test/t/nameerror.rb +5 -5
  240. data/modules/mruby/test/t/nil.rb +2 -2
  241. data/modules/mruby/test/t/nomethoderror.rb +1 -1
  242. data/modules/mruby/test/t/numeric.rb +5 -5
  243. data/modules/mruby/test/t/object.rb +2 -2
  244. data/modules/mruby/test/t/proc.rb +8 -8
  245. data/modules/mruby/test/t/range.rb +9 -9
  246. data/modules/mruby/test/t/rangeerror.rb +2 -2
  247. data/modules/mruby/test/t/runtimeerror.rb +1 -1
  248. data/modules/mruby/test/t/standarderror.rb +2 -2
  249. data/modules/mruby/test/t/string.rb +100 -100
  250. data/modules/mruby/test/t/symbol.rb +5 -5
  251. data/modules/mruby/test/t/syntax.rb +15 -6
  252. data/modules/mruby/test/t/true.rb +3 -3
  253. data/modules/mruby/test/t/typeerror.rb +2 -2
  254. data/modules/mruby/tools/mrbc/mrbc.c +10 -4
  255. data/modules/mruby/travis_config.rb +1 -0
  256. data/scripts/gen_gems_config.rb +5 -1
  257. metadata +19 -4
  258. data/modules/emscripten/tools/test-js-optimizer-asm-outline-output.js +0 -570
@@ -186,11 +186,11 @@ template <class charT> class messages_byname;
186
186
  #endif
187
187
  #include <cstdlib>
188
188
  #include <ctime>
189
- #ifdef _WIN32
189
+ #ifdef _LIBCPP_MSVCRT
190
190
  #include <support/win32/locale_win32.h>
191
- #else // _WIN32
191
+ #else // _LIBCPP_MSVCRT
192
192
  #include <nl_types.h>
193
- #endif // !_WIN32
193
+ #endif // !_LIBCPP_MSVCRT
194
194
 
195
195
  #ifdef __APPLE__
196
196
  #include <Availability.h>
@@ -206,6 +206,8 @@ _LIBCPP_BEGIN_NAMESPACE_STD
206
206
 
207
207
  #if defined(__APPLE__) || defined(__FreeBSD__)
208
208
  # define _LIBCPP_GET_C_LOCALE 0
209
+ #elif defined(__NetBSD__)
210
+ # define _LIBCPP_GET_C_LOCALE LC_C_LOCALE
209
211
  #else
210
212
  # define _LIBCPP_GET_C_LOCALE __cloc()
211
213
  // Get the C locale object
@@ -354,20 +356,6 @@ size_t __mbsrtowcs_l(wchar_t *__dest, const char **__src, size_t __len,
354
356
  #endif
355
357
  }
356
358
 
357
- inline
358
- int __sprintf_l(char *__s, locale_t __l, const char *__format, ...) {
359
- va_list __va;
360
- va_start(__va, __format);
361
- #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
362
- int __res = vsprintf_l(__s, __l, __format, __va);
363
- #else
364
- __locale_raii __current(uselocale(__l), uselocale);
365
- int __res = vsprintf(__s, __format, __va);
366
- #endif
367
- va_end(__va);
368
- return __res;
369
- }
370
-
371
359
  inline
372
360
  int __snprintf_l(char *__s, size_t __n, locale_t __l, const char *__format, ...) {
373
361
  va_list __va;
@@ -634,8 +622,7 @@ __num_get<_CharT>::__stage2_int_loop(_CharT __ct, int __base, char* __a, char*&
634
622
  }
635
623
  return -1;
636
624
  }
637
- if (__a_end-__a < __num_get_buf_sz - 1)
638
- *__a_end++ = __src[__f];
625
+ *__a_end++ = __src[__f];
639
626
  ++__dc;
640
627
  return 0;
641
628
  }
@@ -646,8 +633,6 @@ __num_get<_CharT>::__stage2_float_loop(_CharT __ct, bool& __in_units, char& __ex
646
633
  _CharT __decimal_point, _CharT __thousands_sep, const string& __grouping,
647
634
  unsigned* __g, unsigned*& __g_end, unsigned& __dc, _CharT* __atoms)
648
635
  {
649
- if (__a_end-__a >= __num_get_buf_sz - 1)
650
- return -1;
651
636
  if (__ct == __decimal_point)
652
637
  {
653
638
  if (!__in_units)
@@ -694,8 +679,7 @@ __num_get<_CharT>::__stage2_float_loop(_CharT __ct, bool& __in_units, char& __ex
694
679
  *__g_end++ = __dc;
695
680
  }
696
681
  }
697
- if (__a_end-__a < __num_get_buf_sz - ((__exp & 0x80) ? 1 : 11))
698
- *__a_end++ = __x;
682
+ *__a_end++ = __x;
699
683
  if (__f >= 22)
700
684
  return 0;
701
685
  ++__dc;
@@ -906,13 +890,20 @@ __num_get_float(const char* __a, const char* __a_end, ios_base::iostate& __err)
906
890
  {
907
891
  if (__a != __a_end)
908
892
  {
893
+ typename remove_reference<decltype(errno)>::type __save_errno = errno;
894
+ errno = 0;
909
895
  char *__p2;
910
896
  long double __ld = strtold_l(__a, &__p2, _LIBCPP_GET_C_LOCALE);
897
+ typename remove_reference<decltype(errno)>::type __current_errno = errno;
898
+ if (__current_errno == 0)
899
+ errno = __save_errno;
911
900
  if (__p2 != __a_end)
912
901
  {
913
902
  __err = ios_base::failbit;
914
903
  return 0;
915
904
  }
905
+ else if (__current_errno == ERANGE)
906
+ __err = ios_base::failbit;
916
907
  return static_cast<_Tp>(__ld);
917
908
  }
918
909
  __err = ios_base::failbit;
@@ -968,16 +959,28 @@ num_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e,
968
959
  char_type __atoms[26];
969
960
  char_type __thousands_sep;
970
961
  string __grouping = this->__stage2_int_prep(__iob, __atoms, __thousands_sep);
971
- char __a[__num_get_base::__num_get_buf_sz] = {0};
962
+ string __buf;
963
+ __buf.resize(__buf.capacity());
964
+ char* __a = &__buf[0];
972
965
  char* __a_end = __a;
973
966
  unsigned __g[__num_get_base::__num_get_buf_sz];
974
967
  unsigned* __g_end = __g;
975
968
  unsigned __dc = 0;
976
969
  for (; __b != __e; ++__b)
970
+ {
971
+ if (__a_end - __a == __buf.size())
972
+ {
973
+ size_t __tmp = __buf.size();
974
+ __buf.resize(2*__buf.size());
975
+ __buf.resize(__buf.capacity());
976
+ __a = &__buf[0];
977
+ __a_end = __a + __tmp;
978
+ }
977
979
  if (this->__stage2_int_loop(*__b, __base, __a, __a_end, __dc,
978
980
  __thousands_sep, __grouping, __g, __g_end,
979
981
  __atoms))
980
982
  break;
983
+ }
981
984
  if (__grouping.size() != 0 && __g_end-__g < __num_get_base::__num_get_buf_sz)
982
985
  *__g_end++ = __dc;
983
986
  // Stage 3
@@ -1003,16 +1006,28 @@ num_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e,
1003
1006
  char_type __atoms[26];
1004
1007
  char_type __thousands_sep;
1005
1008
  string __grouping = this->__stage2_int_prep(__iob, __atoms, __thousands_sep);
1006
- char __a[__num_get_base::__num_get_buf_sz] = {0};
1009
+ string __buf;
1010
+ __buf.resize(__buf.capacity());
1011
+ char* __a = &__buf[0];
1007
1012
  char* __a_end = __a;
1008
1013
  unsigned __g[__num_get_base::__num_get_buf_sz];
1009
1014
  unsigned* __g_end = __g;
1010
1015
  unsigned __dc = 0;
1011
1016
  for (; __b != __e; ++__b)
1017
+ {
1018
+ if (__a_end - __a == __buf.size())
1019
+ {
1020
+ size_t __tmp = __buf.size();
1021
+ __buf.resize(2*__buf.size());
1022
+ __buf.resize(__buf.capacity());
1023
+ __a = &__buf[0];
1024
+ __a_end = __a + __tmp;
1025
+ }
1012
1026
  if (this->__stage2_int_loop(*__b, __base, __a, __a_end, __dc,
1013
1027
  __thousands_sep, __grouping, __g, __g_end,
1014
1028
  __atoms))
1015
1029
  break;
1030
+ }
1016
1031
  if (__grouping.size() != 0 && __g_end-__g < __num_get_base::__num_get_buf_sz)
1017
1032
  *__g_end++ = __dc;
1018
1033
  // Stage 3
@@ -1038,16 +1053,28 @@ num_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e,
1038
1053
  char_type __atoms[26];
1039
1054
  char_type __thousands_sep;
1040
1055
  string __grouping = this->__stage2_int_prep(__iob, __atoms, __thousands_sep);
1041
- char __a[__num_get_base::__num_get_buf_sz] = {0};
1056
+ string __buf;
1057
+ __buf.resize(__buf.capacity());
1058
+ char* __a = &__buf[0];
1042
1059
  char* __a_end = __a;
1043
1060
  unsigned __g[__num_get_base::__num_get_buf_sz];
1044
1061
  unsigned* __g_end = __g;
1045
1062
  unsigned __dc = 0;
1046
1063
  for (; __b != __e; ++__b)
1064
+ {
1065
+ if (__a_end - __a == __buf.size())
1066
+ {
1067
+ size_t __tmp = __buf.size();
1068
+ __buf.resize(2*__buf.size());
1069
+ __buf.resize(__buf.capacity());
1070
+ __a = &__buf[0];
1071
+ __a_end = __a + __tmp;
1072
+ }
1047
1073
  if (this->__stage2_int_loop(*__b, __base, __a, __a_end, __dc,
1048
1074
  __thousands_sep, __grouping, __g, __g_end,
1049
1075
  __atoms))
1050
1076
  break;
1077
+ }
1051
1078
  if (__grouping.size() != 0 && __g_end-__g < __num_get_base::__num_get_buf_sz)
1052
1079
  *__g_end++ = __dc;
1053
1080
  // Stage 3
@@ -1073,16 +1100,28 @@ num_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e,
1073
1100
  char_type __atoms[26];
1074
1101
  char_type __thousands_sep;
1075
1102
  string __grouping = this->__stage2_int_prep(__iob, __atoms, __thousands_sep);
1076
- char __a[__num_get_base::__num_get_buf_sz] = {0};
1103
+ string __buf;
1104
+ __buf.resize(__buf.capacity());
1105
+ char* __a = &__buf[0];
1077
1106
  char* __a_end = __a;
1078
1107
  unsigned __g[__num_get_base::__num_get_buf_sz];
1079
1108
  unsigned* __g_end = __g;
1080
1109
  unsigned __dc = 0;
1081
1110
  for (; __b != __e; ++__b)
1111
+ {
1112
+ if (__a_end - __a == __buf.size())
1113
+ {
1114
+ size_t __tmp = __buf.size();
1115
+ __buf.resize(2*__buf.size());
1116
+ __buf.resize(__buf.capacity());
1117
+ __a = &__buf[0];
1118
+ __a_end = __a + __tmp;
1119
+ }
1082
1120
  if (this->__stage2_int_loop(*__b, __base, __a, __a_end, __dc,
1083
1121
  __thousands_sep, __grouping, __g, __g_end,
1084
1122
  __atoms))
1085
1123
  break;
1124
+ }
1086
1125
  if (__grouping.size() != 0 && __g_end-__g < __num_get_base::__num_get_buf_sz)
1087
1126
  *__g_end++ = __dc;
1088
1127
  // Stage 3
@@ -1108,16 +1147,28 @@ num_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e,
1108
1147
  char_type __atoms[26];
1109
1148
  char_type __thousands_sep;
1110
1149
  string __grouping = this->__stage2_int_prep(__iob, __atoms, __thousands_sep);
1111
- char __a[__num_get_base::__num_get_buf_sz] = {0};
1150
+ string __buf;
1151
+ __buf.resize(__buf.capacity());
1152
+ char* __a = &__buf[0];
1112
1153
  char* __a_end = __a;
1113
1154
  unsigned __g[__num_get_base::__num_get_buf_sz];
1114
1155
  unsigned* __g_end = __g;
1115
1156
  unsigned __dc = 0;
1116
1157
  for (; __b != __e; ++__b)
1158
+ {
1159
+ if (__a_end - __a == __buf.size())
1160
+ {
1161
+ size_t __tmp = __buf.size();
1162
+ __buf.resize(2*__buf.size());
1163
+ __buf.resize(__buf.capacity());
1164
+ __a = &__buf[0];
1165
+ __a_end = __a + __tmp;
1166
+ }
1117
1167
  if (this->__stage2_int_loop(*__b, __base, __a, __a_end, __dc,
1118
1168
  __thousands_sep, __grouping, __g, __g_end,
1119
1169
  __atoms))
1120
1170
  break;
1171
+ }
1121
1172
  if (__grouping.size() != 0 && __g_end-__g < __num_get_base::__num_get_buf_sz)
1122
1173
  *__g_end++ = __dc;
1123
1174
  // Stage 3
@@ -1143,16 +1194,28 @@ num_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e,
1143
1194
  char_type __atoms[26];
1144
1195
  char_type __thousands_sep;
1145
1196
  string __grouping = this->__stage2_int_prep(__iob, __atoms, __thousands_sep);
1146
- char __a[__num_get_base::__num_get_buf_sz] = {0};
1197
+ string __buf;
1198
+ __buf.resize(__buf.capacity());
1199
+ char* __a = &__buf[0];
1147
1200
  char* __a_end = __a;
1148
1201
  unsigned __g[__num_get_base::__num_get_buf_sz];
1149
1202
  unsigned* __g_end = __g;
1150
1203
  unsigned __dc = 0;
1151
1204
  for (; __b != __e; ++__b)
1205
+ {
1206
+ if (__a_end - __a == __buf.size())
1207
+ {
1208
+ size_t __tmp = __buf.size();
1209
+ __buf.resize(2*__buf.size());
1210
+ __buf.resize(__buf.capacity());
1211
+ __a = &__buf[0];
1212
+ __a_end = __a + __tmp;
1213
+ }
1152
1214
  if (this->__stage2_int_loop(*__b, __base, __a, __a_end, __dc,
1153
1215
  __thousands_sep, __grouping, __g, __g_end,
1154
1216
  __atoms))
1155
1217
  break;
1218
+ }
1156
1219
  if (__grouping.size() != 0 && __g_end-__g < __num_get_base::__num_get_buf_sz)
1157
1220
  *__g_end++ = __dc;
1158
1221
  // Stage 3
@@ -1180,7 +1243,9 @@ num_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e,
1180
1243
  string __grouping = this->__stage2_float_prep(__iob, __atoms,
1181
1244
  __decimal_point,
1182
1245
  __thousands_sep);
1183
- char __a[__num_get_base::__num_get_buf_sz] = {0};
1246
+ string __buf;
1247
+ __buf.resize(__buf.capacity());
1248
+ char* __a = &__buf[0];
1184
1249
  char* __a_end = __a;
1185
1250
  unsigned __g[__num_get_base::__num_get_buf_sz];
1186
1251
  unsigned* __g_end = __g;
@@ -1188,11 +1253,21 @@ num_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e,
1188
1253
  bool __in_units = true;
1189
1254
  char __exp = 'E';
1190
1255
  for (; __b != __e; ++__b)
1256
+ {
1257
+ if (__a_end - __a == __buf.size())
1258
+ {
1259
+ size_t __tmp = __buf.size();
1260
+ __buf.resize(2*__buf.size());
1261
+ __buf.resize(__buf.capacity());
1262
+ __a = &__buf[0];
1263
+ __a_end = __a + __tmp;
1264
+ }
1191
1265
  if (this->__stage2_float_loop(*__b, __in_units, __exp, __a, __a_end,
1192
1266
  __decimal_point, __thousands_sep,
1193
1267
  __grouping, __g, __g_end,
1194
1268
  __dc, __atoms))
1195
1269
  break;
1270
+ }
1196
1271
  if (__grouping.size() != 0 && __in_units && __g_end-__g < __num_get_base::__num_get_buf_sz)
1197
1272
  *__g_end++ = __dc;
1198
1273
  // Stage 3
@@ -1220,7 +1295,9 @@ num_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e,
1220
1295
  string __grouping = this->__stage2_float_prep(__iob, __atoms,
1221
1296
  __decimal_point,
1222
1297
  __thousands_sep);
1223
- char __a[__num_get_base::__num_get_buf_sz] = {0};
1298
+ string __buf;
1299
+ __buf.resize(__buf.capacity());
1300
+ char* __a = &__buf[0];
1224
1301
  char* __a_end = __a;
1225
1302
  unsigned __g[__num_get_base::__num_get_buf_sz];
1226
1303
  unsigned* __g_end = __g;
@@ -1228,11 +1305,21 @@ num_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e,
1228
1305
  bool __in_units = true;
1229
1306
  char __exp = 'E';
1230
1307
  for (; __b != __e; ++__b)
1308
+ {
1309
+ if (__a_end - __a == __buf.size())
1310
+ {
1311
+ size_t __tmp = __buf.size();
1312
+ __buf.resize(2*__buf.size());
1313
+ __buf.resize(__buf.capacity());
1314
+ __a = &__buf[0];
1315
+ __a_end = __a + __tmp;
1316
+ }
1231
1317
  if (this->__stage2_float_loop(*__b, __in_units, __exp, __a, __a_end,
1232
1318
  __decimal_point, __thousands_sep,
1233
1319
  __grouping, __g, __g_end,
1234
1320
  __dc, __atoms))
1235
1321
  break;
1322
+ }
1236
1323
  if (__grouping.size() != 0 && __in_units && __g_end-__g < __num_get_base::__num_get_buf_sz)
1237
1324
  *__g_end++ = __dc;
1238
1325
  // Stage 3
@@ -1260,7 +1347,9 @@ num_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e,
1260
1347
  string __grouping = this->__stage2_float_prep(__iob, __atoms,
1261
1348
  __decimal_point,
1262
1349
  __thousands_sep);
1263
- char __a[__num_get_base::__num_get_buf_sz] = {0};
1350
+ string __buf;
1351
+ __buf.resize(__buf.capacity());
1352
+ char* __a = &__buf[0];
1264
1353
  char* __a_end = __a;
1265
1354
  unsigned __g[__num_get_base::__num_get_buf_sz];
1266
1355
  unsigned* __g_end = __g;
@@ -1268,11 +1357,21 @@ num_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e,
1268
1357
  bool __in_units = true;
1269
1358
  char __exp = 'E';
1270
1359
  for (; __b != __e; ++__b)
1360
+ {
1361
+ if (__a_end - __a == __buf.size())
1362
+ {
1363
+ size_t __tmp = __buf.size();
1364
+ __buf.resize(2*__buf.size());
1365
+ __buf.resize(__buf.capacity());
1366
+ __a = &__buf[0];
1367
+ __a_end = __a + __tmp;
1368
+ }
1271
1369
  if (this->__stage2_float_loop(*__b, __in_units, __exp, __a, __a_end,
1272
1370
  __decimal_point, __thousands_sep,
1273
1371
  __grouping, __g, __g_end,
1274
1372
  __dc, __atoms))
1275
1373
  break;
1374
+ }
1276
1375
  if (__grouping.size() != 0 && __in_units && __g_end-__g < __num_get_base::__num_get_buf_sz)
1277
1376
  *__g_end++ = __dc;
1278
1377
  // Stage 3
@@ -1300,16 +1399,28 @@ num_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e,
1300
1399
  string __grouping;
1301
1400
  use_facet<ctype<_CharT> >(__iob.getloc()).widen(__num_get_base::__src,
1302
1401
  __num_get_base::__src + 26, __atoms);
1303
- char __a[__num_get_base::__num_get_buf_sz] = {0};
1402
+ string __buf;
1403
+ __buf.resize(__buf.capacity());
1404
+ char* __a = &__buf[0];
1304
1405
  char* __a_end = __a;
1305
1406
  unsigned __g[__num_get_base::__num_get_buf_sz];
1306
1407
  unsigned* __g_end = __g;
1307
1408
  unsigned __dc = 0;
1308
1409
  for (; __b != __e; ++__b)
1410
+ {
1411
+ if (__a_end - __a == __buf.size())
1412
+ {
1413
+ size_t __tmp = __buf.size();
1414
+ __buf.resize(2*__buf.size());
1415
+ __buf.resize(__buf.capacity());
1416
+ __a = &__buf[0];
1417
+ __a_end = __a + __tmp;
1418
+ }
1309
1419
  if (this->__stage2_int_loop(*__b, __base, __a, __a_end, __dc,
1310
1420
  __thousands_sep, __grouping,
1311
1421
  __g, __g_end, __atoms))
1312
1422
  break;
1423
+ }
1313
1424
  // Stage 3
1314
1425
  __a[sizeof(__a)-1] = 0;
1315
1426
  #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
@@ -1678,9 +1789,9 @@ num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob,
1678
1789
  + 1;
1679
1790
  char __nar[__nbuf];
1680
1791
  #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
1681
- int __nc = sprintf_l(__nar, _LIBCPP_GET_C_LOCALE, __fmt, __v);
1792
+ int __nc = snprintf_l(__nar, sizeof(__nar), _LIBCPP_GET_C_LOCALE, __fmt, __v);
1682
1793
  #else
1683
- int __nc = __sprintf_l(__nar, __cloc(), __fmt, __v);
1794
+ int __nc = __snprintf_l(__nar, sizeof(__nar), __cloc(), __fmt, __v);
1684
1795
  #endif
1685
1796
  char* __ne = __nar + __nc;
1686
1797
  char* __np = this->__identify_padding(__nar, __ne, __iob);
@@ -1708,9 +1819,9 @@ num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob,
1708
1819
  + 1;
1709
1820
  char __nar[__nbuf];
1710
1821
  #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
1711
- int __nc = sprintf_l(__nar, _LIBCPP_GET_C_LOCALE, __fmt, __v);
1822
+ int __nc = snprintf_l(__nar, sizeof(__nar), _LIBCPP_GET_C_LOCALE, __fmt, __v);
1712
1823
  #else
1713
- int __nc = __sprintf_l(__nar, __cloc(), __fmt, __v);
1824
+ int __nc = __snprintf_l(__nar, sizeof(__nar), __cloc(), __fmt, __v);
1714
1825
  #endif
1715
1826
  char* __ne = __nar + __nc;
1716
1827
  char* __np = this->__identify_padding(__nar, __ne, __iob);
@@ -1738,9 +1849,9 @@ num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob,
1738
1849
  + 1;
1739
1850
  char __nar[__nbuf];
1740
1851
  #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
1741
- int __nc = sprintf_l(__nar, _LIBCPP_GET_C_LOCALE, __fmt, __v);
1852
+ int __nc = snprintf_l(__nar, sizeof(__nar), _LIBCPP_GET_C_LOCALE, __fmt, __v);
1742
1853
  #else
1743
- int __nc = __sprintf_l(__nar, __cloc(), __fmt, __v);
1854
+ int __nc = __snprintf_l(__nar, sizeof(__nar), __cloc(), __fmt, __v);
1744
1855
  #endif
1745
1856
  char* __ne = __nar + __nc;
1746
1857
  char* __np = this->__identify_padding(__nar, __ne, __iob);
@@ -1768,9 +1879,9 @@ num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob,
1768
1879
  + 1;
1769
1880
  char __nar[__nbuf];
1770
1881
  #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
1771
- int __nc = sprintf_l(__nar, _LIBCPP_GET_C_LOCALE, __fmt, __v);
1882
+ int __nc = snprintf_l(__nar, sizeof(__nar), _LIBCPP_GET_C_LOCALE, __fmt, __v);
1772
1883
  #else
1773
- int __nc = __sprintf_l(__nar, __cloc(), __fmt, __v);
1884
+ int __nc = __snprintf_l(__nar, sizeof(__nar), __cloc(), __fmt, __v);
1774
1885
  #endif
1775
1886
  char* __ne = __nar + __nc;
1776
1887
  char* __np = this->__identify_padding(__nar, __ne, __iob);
@@ -1932,9 +2043,9 @@ num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob,
1932
2043
  const unsigned __nbuf = 20;
1933
2044
  char __nar[__nbuf];
1934
2045
  #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
1935
- int __nc = sprintf_l(__nar, _LIBCPP_GET_C_LOCALE, __fmt, __v);
2046
+ int __nc = snprintf_l(__nar, sizeof(__nar), _LIBCPP_GET_C_LOCALE, __fmt, __v);
1936
2047
  #else
1937
- int __nc = __sprintf_l(__nar, __cloc(), __fmt, __v);
2048
+ int __nc = __snprintf_l(__nar, sizeof(__nar), __cloc(), __fmt, __v);
1938
2049
  #endif
1939
2050
  char* __ne = __nar + __nc;
1940
2051
  char* __np = this->__identify_padding(__nar, __ne, __iob);