summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-sprintf
AgeCommit message (Collapse)Author
2020-06-20Fix potential buffer overflow in `sprintf.c`.Yukihiro "Matz" Matsumoto
2020-05-27Move `fmt_setup` until absolutely necessary.Yukihiro "Matz" Matsumoto
2020-05-26Integer format can be bigger than `32` on 64bit platforms.Yukihiro "Matz" Matsumoto
We made it `64` which should be big enough: - Format modifier: 4 characters max - Maximum width: 19 digits max - Period between width and precision: 1 character - Maximum precision: 19 digits max - Format specifier: 1 character - NUL terminator: 1 byte - Total: 45 < 64
2020-05-07Remove unnecessary `sprintf` test that fails since 91368c1.Yukihiro "Matz" Matsumoto
2020-05-07Avoid `mrb_funcall` if `MRB_UFT8_STRING` is not set.Yukihiro "Matz" Matsumoto
2020-04-11Support `MRB_DISABLE_STDIO` for mruby-sprintf; ref #4954dearblue
2020-04-11Supports some specifier flags with `mrb_float_to_str()`dearblue
Changed to understand `#`, `0`, `-`, ` ` and `+`. Based on src/stdio/vfprintf.c in git://git.musl-libc.org/musl
2020-03-08Add configuration guard for `MRB_DISABLE_STDIO`dearblue
ref #4576 and ref #4947 * Need MRBAPI functions without `MRB_DISABLE_STDIO`: * mrbgems/mruby-bin-debugger * mrbgems/mruby-bin-mirb * mrbgems/mruby-bin-mrbc * mrbgems/mruby-bin-mruby * mrbgems/mruby-bin-strip * Need `stdio.h`: * mrbgems/mruby-io * mrbgems/mruby-print * Need `snprintf()` in `stdio.h`: * mrbgems/mruby-pack * mrbgems/mruby-sprintf
2020-03-08Remove unnecessary 'stdio.h'; ref #4947dearblue
'stdio.h' is included in 'mruby.h' ('mrbconf.h'). However, keep 'stdio.h' used by mruby-test.
2019-11-15Fix argument specs to `Kernel`KOBAYASHI Shuji
2019-09-29Further refactoring over #4738Yukihiro "Matz" Matsumoto
2019-09-29Remove unnecessary assignmentsdearblue
2019-09-26Use proper type specifier for `mrb_raisef()`; ref #4731Yukihiro "Matz" Matsumoto
The following two may be different: * `%d` for `int` * `%i` for `mrb_int`
2019-09-26Merge pull request #4731 from dearblue/consistent-typeYukihiro "Matz" Matsumoto
Keep the type of `posarg` consistent
2019-09-25Keep the type of `posarg` consistentdearblue
Match the type with the caller and related functions.
2019-09-25Add "fall through"dearblue
2019-08-05Use new specifiers/modifiers of `mrb_vfromat()`KOBAYASHI Shuji
The binary sizes (gems are only `mruby-bin-mruby`) are reduced slightly in my environment than before the introduction of new specifiers/modifiers (5116789a) with this change. ------------+-------------------+-------------------+-------- BINARY | BEFORE (5116789a) | AFTER (This PR) | RATIO ------------+-------------------+-------------------+-------- mruby | 593416 bytes | 593208 bytes | -0.04% libmruby.a | 769048 bytes | 767264 bytes | -0.23% ------------+-------------------+-------------------+-------- BTW, I accidentally changed `tasks/toolchains/visualcpp.rake` at #4613, so I put it back.
2019-01-03Remove `Kernel#class_defined?` which is not available in CRuby; #3829Yukihiro "Matz" Matsumoto
2018-11-19Use type checking `mrb_to_str` instead of converting `mrb_str_to_str`.Yukihiro "Matz" Matsumoto
2018-11-19Removed `to_hash` conversion method.Yukihiro "Matz" Matsumoto
2018-09-14Prevent signed integer overflow.Clayton Smith
2018-09-07Fix integer overflow issue; fix #4108Yukihiro "Matz" Matsumoto
I misunderstood the return value from `snprintf()`, which is NOT number of characters written in buffer, but the number of character the buffer has to have to write the complete output.
2018-07-31Check size of the integer multiply before actual overflow; fix #4062Yukihiro "Matz" Matsumoto
2017-10-13Support MRB_WIHTOUT_FLOAT to mruby-sprintfYAMAMOTO Masaya
2017-09-27fix: mrbgems\mruby-sprintf\src\sprintf.c(1052): warning C4244: '+=': ↵Tomasz Dąbrowski
conversion from 'mrb_int' to 'int', possible loss of data
2017-09-27fix: mrbgems\mruby-sprintf\src\sprintf.c(623): warning C4244: 'function': ↵Tomasz Dąbrowski
conversion from 'mrb_int' to 'int', possible loss of data
2017-09-27fix: mrbgems\mruby-sprintf\src\sprintf.c(646): warning C4244: 'function': ↵Tomasz Dąbrowski
conversion from 'mrb_int' to 'int', possible loss of data
2017-09-27fix: mrbgems\mruby-sprintf\src\sprintf.c(618): warning C4244: ↵Tomasz Dąbrowski
'initializing': conversion from 'mrb_int' to 'int', possible loss of data
2017-09-27fix: mrbgems\mruby-sprintf\src\sprintf.c(516): warning C4244: 'function': ↵Tomasz Dąbrowski
conversion from 'mrb_int' to 'int', possible loss of data
2017-08-25fix `String#% %d` test with `MRB_INT16` setTomasz Dąbrowski
2017-08-18Separate `mrb_str_buf_new` and `mrb_str_new_capa`.Yukihiro "Matz" Matsumoto
`mrb_str_buf_new` is an old function that ensures capacity size of `MRB_STR_BUF_MIN_SIZE` minimum. Usually one need to use `mrb_str_new_capa` instead.
2017-08-12Reduce integer type mismatch warnings in VC.Yukihiro "Matz" Matsumoto
2017-08-09Replaced tabs with spacesChristopher Aue
2017-07-16added tests for #3736Christopher Aue
2017-07-14Avoid duplicated width filling for sprintf `%d` specifier; fix #3736Yukihiro "Matz" Matsumoto
2017-07-05`print("%d", 0)` should not print `-0`; fix #3731Yukihiro "Matz" Matsumoto
2017-07-05Negation was not a good way to handle negative integers; fix #3729Yukihiro "Matz" Matsumoto
There's a number that negation does not work (-2147483648 in 32bit environment).
2017-07-05In Ruby, `sprintf` specifier `%u` should behave as `%d`; fix #3730Yukihiro "Matz" Matsumoto
Since there's no unsigned integer in Ruby. Binary, octal and hexadecimal negative numbers can be represented by using 2's compliment. But decimal (not being power of 2) cannot be use that kind of format.
2017-07-04Refactor `sprintf()` code.Yukihiro "Matz" Matsumoto
2017-07-04Initialize `flags` for each loop.Yukihiro "Matz" Matsumoto
2017-06-28Avoid `mrb_funcall()` unless absolutely necessary; ref #3722Yukihiro "Matz" Matsumoto
As a result, `#chr` is not called for ch < 0x80, so we need to update the "invalid chr" test.
2017-05-25Under MRB_INT64, width may be bigger than INT_MAX; fix #3665Yukihiro "Matz" Matsumoto
2017-05-08Fix segmentation fault ref: #3648ksss
2017-04-29Better error messageNobuyoshi Nakada
Raise argument error with the better message, at the only place where the size to fill can be negative.
2017-04-29Use `FILL` and `PUSH`Nobuyoshi Nakada
Instead of loop or `memcpy` after `CHECK`, use dedicated macros, `FILL` and `PUSH`, respectively.
2017-04-23Refactor "%f" % Inf/NaNNobuyoshi Nakada
As for non-finite float, calculate the exact needed size with the space flag.
2017-04-23Fix space flag when Inf/NaN and width==3Nobuyoshi Nakada
While `"% 2f"` and `"% 4f"` result in `" Inf"` and `" Inf"` respectively, `"% 3f"` results in `"Inf"` (no space).
2017-04-03Unify `else` clause styleYukihiro "Matz" Matsumoto
2017-03-18Should use mrb_int for any objectksss
o=Object.new def o.to_int 1 end p "%*d" % [o, 1]
2017-03-13Fix out-of-bound accessNobuyoshi Nakada
Get rid of out-of-bound access when single % at the end.