From 67746d04a317e6def002c86929527d5050adb834 Mon Sep 17 00:00:00 2001 From: Edouard Tisserant Date: Sun, 29 Nov 2015 20:41:25 +0100 Subject: [PATCH] Safer setters for Message --- src/gen_cpp_Message.ysl2 | 36 +++++++++++++++++++++++++----------- src/gen_java_Message.ysl2 | 8 ++++++++ 2 files changed, 33 insertions(+), 11 deletions(-) diff --git a/src/gen_cpp_Message.ysl2 b/src/gen_cpp_Message.ysl2 index ec996c6..38b651e 100644 --- a/src/gen_cpp_Message.ysl2 +++ b/src/gen_cpp_Message.ysl2 @@ -125,19 +125,33 @@ tstylesheet { choose { when "../enum[@name=$type]" |> _obj->«$cname» = («$ctype») (int) value; - when "$type = 'string'" { - |> free(_obj->«$cname»); - |> _obj->«$cname» = to_«$type»(env, value); - } otherwise { - const "free" choose { - when "$ctype = 'pEp_identity'" > identity - when "contains($ctype, '_t')" value "substring-before($ctype, '_t')"; - otherwise value "$ctype"; - } + choose { + when "$type = 'string'" { + |> free(_obj->«$cname»); + } + otherwise { + const "free" choose { + when "$ctype = 'pEp_identity'" > identity + when "contains($ctype, '_t')" value "substring-before($ctype, '_t')"; + otherwise value "$ctype"; + } - |> free_«$free»(_obj->«$cname»); - |> _obj->«$cname» = to_«$type»(env, value); + |> free_«$free»(_obj->«$cname»); + } + } + |> if(value){ + choose { + when "$type = 'string'" { + |>> _obj->«$cname» = to_«$type»(env, value); + } + otherwise { + |>> _obj->«$cname» = to_«$type»(env, value); + } + } + |> }else{ + |> _obj->«$cname» = NULL; + |> } } } || diff --git a/src/gen_java_Message.ysl2 b/src/gen_java_Message.ysl2 index 3345629..ca293c8 100644 --- a/src/gen_java_Message.ysl2 +++ b/src/gen_java_Message.ysl2 @@ -101,6 +101,8 @@ tstylesheet { public void set«$name»(«$type» value) { if(value != null) _set«$name»(new «$itype»(value)); + else + _set«$name»(null); } || @@ -122,6 +124,8 @@ tstylesheet { for («$ename» i : value) list.add(new _«$ename»(i)); _set«$name»(list); + }else{ + _set«$name»(null); } } @@ -137,6 +141,8 @@ tstylesheet { public void set«$name»(«$type» value) { if(value != null) _set«$name»(AbstractEngine.toUTF8(value)); + else + _set«$name»(null); } || @@ -151,6 +157,8 @@ tstylesheet { public void set«$name»(«$itype» value) { if(value != null) _set«$name»(value.value); + else + _set«$name»(0); } ||