From f33247c0f555424bd028fa0f0a33eb08d2c45b9b Mon Sep 17 00:00:00 2001 From: "Erik S. Chang" Date: Tue, 20 Apr 2010 01:22:03 +0000 Subject: [PATCH] freeze TYPE_LIST for safety since the C code depends on it git-svn-id: https://lwes.svn.sourceforge.net/svnroot/lwes/lwes-ruby/trunk@457 a2f82657-cdd2-4550-bd36-68a8e7111808 --- lib/lwes/struct.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/lwes/struct.rb b/lib/lwes/struct.rb index 5136167..ac10117 100644 --- a/lib/lwes/struct.rb +++ b/lib/lwes/struct.rb @@ -95,8 +95,13 @@ module LWES tmp.const_set :NAME, name.to_s ed = tmp.const_set :EVENT_DEF, {} event_def.each { |(field,type)| ed[field] = type } - type_list = event_def.map { |(field,type)| [ field, field.to_s, type ] } + + # freeze since emitter.c can segfault if this ever changes + type_list = event_def.map do |(field,type)| + [ field, field.to_s.freeze, type ].freeze + end.freeze tmp.const_set :TYPE_LIST, type_list + tmp.const_set :HAVE_ENCODING, type_list.include?([ :enc, 'enc', LWES::INT_16 ]) -- 2.11.4.GIT