THRIFT-3584 Lua: boolean false value cannot be transferred
This closes #826
diff --git a/compiler/cpp/src/generate/t_lua_generator.cc b/compiler/cpp/src/generate/t_lua_generator.cc
index a207309..1e80fd1 100644
--- a/compiler/cpp/src/generate/t_lua_generator.cc
+++ b/compiler/cpp/src/generate/t_lua_generator.cc
@@ -463,7 +463,9 @@
indent(out) << "oprot:writeStructBegin('" << tstruct->get_name() << "')" << endl;
for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
- indent(out) << "if self." << (*f_iter)->get_name() << " then" << endl;
+ // To check element of self whether nil or not.
+ // avoid the value(false) of BOOL is lost.
+ indent(out) << "if self." << (*f_iter)->get_name() << " ~= nil then" << endl;
indent_up();
indent(out) << "oprot:writeFieldBegin('" << (*f_iter)->get_name() << "', "
<< type_to_enum((*f_iter)->get_type()) << ", " << (*f_iter)->get_key() << ")"