diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | translate.cxx | 10 |
2 files changed, 14 insertions, 2 deletions
@@ -1,5 +1,11 @@ 2006-04-23 Eugene Teo <eteo@redhat.com> + PR 2149 + * translate.cxx (mapvar::set): Test _stp_map_set_xx() for + array overflows. + +2006-04-23 Eugene Teo <eteo@redhat.com> + * small_demos/ansi_colors.stp: Add an example of using octal escape sequences to display all possible ansi colors. diff --git a/translate.cxx b/translate.cxx index 83d6dd93..f3a5b23d 100644 --- a/translate.cxx +++ b/translate.cxx @@ -581,14 +581,20 @@ struct mapvar string set (vector<tmpvar> const & indices, tmpvar const & val) const { + string res = "{ int rc = "; + // impedance matching: empty strings -> NULL if (type() == pe_string) - return (call_prefix("set", indices) + res += (call_prefix("set", indices) + ", (" + val.qname() + "[0] ? " + val.qname() + " : NULL))"); else if (type() == pe_long) - return (call_prefix("set", indices) + ", " + val.qname() + ")"); + res += (call_prefix("set", indices) + ", " + val.qname() + ")"); else throw semantic_error("setting a value of an unsupported map type"); + + res += "; if (unlikely(rc)) c->last_error = \"Array overflow, check MAXMAPENTRIES\"; }"; + + return res; } string hist() const |