Changeset 83e15c94ca8c53994ef07cdb6c7a5ceffe67884c
- Timestamp:
- 06/20/2008 01:28:12 PM
(2 months ago)
- Author:
- mitchell <mitchell@frost.(none)>
- git-committer:
- mitchell <mitchell@frost.(none)> 1213993692 -0400
- git-parent:
[13c63d8c0d85ad5e66f522a0a79f9bb68e084c30]
- git-author:
- mitchell <mitchell@frost.(none)> 1213993692 -0400
- Message:
Added "padding" to fix some of the memory freeing crashes as in parser.c.
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| r069dddc |
r83e15c9 |
|
| 139 | 139 | /** Returns a language_breakdown for a given language name. */ |
|---|
| 140 | 140 | LanguageBreakdown *get_language_breakdown(char *name) { |
|---|
| 141 | | int i; |
|---|
| 142 | | for (i = 0; i < pr->language_breakdown_count; i++) |
|---|
| 143 | | if (strcmp(pr->language_breakdowns[i].name, name) == 0) |
|---|
| 144 | | return &pr->language_breakdowns[i]; // found one |
|---|
| 145 | | |
|---|
| 146 | | language_breakdown_initialize( |
|---|
| | 141 | int i; |
|---|
| | 142 | for (i = 0; i < pr->language_breakdown_count; i++) |
|---|
| | 143 | if (strcmp(pr->language_breakdowns[i].name, name) == 0) |
|---|
| | 144 | return &pr->language_breakdowns[i]; // found one |
|---|
| | 145 | |
|---|
| | 146 | language_breakdown_initialize( |
|---|
| 147 | 147 | &pr->language_breakdowns[pr->language_breakdown_count], |
|---|
| 148 | | name, parse_buffer_len); // create one |
|---|
| 149 | | return &pr->language_breakdowns[pr->language_breakdown_count++]; |
|---|
| | 148 | name, parse_buffer_len + 5); // create one |
|---|
| | 149 | return &pr->language_breakdowns[pr->language_breakdown_count++]; |
|---|
| 150 | 150 | } |
|---|
| 151 | 151 | |
|---|
| 152 | 152 | /** Yields a line's language, semantic, and text to an optional Ruby block. */ |
|---|
| 153 | 153 | void ragel_parse_yield_line(const char *lang, const char *entity, int s, int e) { |
|---|
| 154 | | if (rb_block_given_p()) { |
|---|
| 155 | | VALUE ary; |
|---|
| 156 | | ary = rb_ary_new2(2); |
|---|
| 157 | | rb_ary_store(ary, 0, ID2SYM(rb_intern(lang))); |
|---|
| 158 | | if (strcmp(entity, "lcode") == 0) |
|---|
| | 154 | if (rb_block_given_p()) { |
|---|
| | 155 | VALUE ary; |
|---|
| | 156 | ary = rb_ary_new2(2); |
|---|
| | 157 | rb_ary_store(ary, 0, ID2SYM(rb_intern(lang))); |
|---|
| | 158 | if (strcmp(entity, "lcode") == 0) |
|---|
| 159 | 159 | rb_ary_store(ary, 1, ID2SYM(rb_intern("code"))); |
|---|
| 160 | 160 | else if (strcmp(entity, "lcomment") == 0) |
|---|
| … | … | |
| 163 | 163 | rb_ary_store(ary, 1, ID2SYM(rb_intern("blank"))); |
|---|
| 164 | 164 | rb_ary_store(ary, 2, rb_str_new(parse_buffer + s, e - s)); |
|---|
| 165 | | rb_yield(ary); |
|---|
| 166 | | } |
|---|
| | 165 | rb_yield(ary); |
|---|
| | 166 | } |
|---|
| 167 | 167 | } |
|---|
| 168 | 168 | |
|---|