Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mruby
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Libraries
mruby
Commits
e96f254e
Commit
e96f254e
authored
7 years ago
by
Yukihiro "Matz" Matsumoto
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Use `mrb_str_new()` instead of `malloc()`; ref #3701
Otherwise the function may terminate and cause memory leaks.
parent
473b2bb2
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
5 additions
and
5 deletions
+5
-5
mrbgems/mruby-string-ext/src/string.c
mrbgems/mruby-string-ext/src/string.c
+5
-5
No files found.
mrbgems/mruby-string-ext/src/string.c
View file @
e96f254e
...
...
@@ -599,14 +599,15 @@ mrb_str_upto(mrb_state *mrb, mrb_value beg)
}
/* both edges are all digits */
if
(
ISDIGIT
(
RSTRING_PTR
(
beg
)[
0
])
&&
ISDIGIT
(
RSTRING_PTR
(
end
)[
0
])
&&
all_digits_p
(
RSTRING_PTR
(
beg
),
RSTRING_LEN
(
beg
))
&&
all_digits_p
(
RSTRING_PTR
(
end
),
RSTRING_LEN
(
end
)))
{
all_digits_p
(
RSTRING_PTR
(
beg
),
RSTRING_LEN
(
beg
))
&&
all_digits_p
(
RSTRING_PTR
(
end
),
RSTRING_LEN
(
end
)))
{
int
ai
=
mrb_gc_arena_save
(
mrb
);
mrb_int
min_width
=
RSTRING_LEN
(
beg
);
mrb_int
max_width
=
RSTRING_LEN
(
end
);
mrb_int
bi
=
mrb_int
(
mrb
,
mrb_str_to_inum
(
mrb
,
beg
,
10
,
FALSE
));
mrb_int
ei
=
mrb_int
(
mrb
,
mrb_str_to_inum
(
mrb
,
end
,
10
,
FALSE
));
char
*
buf
=
(
char
*
)
mrb_malloc
(
mrb
,
max_width
+
1
);
int
ai
=
mrb_gc_arena_save
(
mrb
);
mrb_value
str
=
mrb_str_new
(
mrb
,
NULL
,
max_width
);
char
*
buf
=
RSTRING_PTR
(
str
);
while
(
bi
<=
ei
)
{
if
(
excl
&&
bi
==
ei
)
break
;
...
...
@@ -616,7 +617,6 @@ mrb_str_upto(mrb_state *mrb, mrb_value beg)
bi
++
;
}
mrb_free
(
mrb
,
buf
);
return
beg
;
}
/* normal case */
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment