From 2ff6152204816d6775ba3431ac8cc6e8132b2124 Mon Sep 17 00:00:00 2001
From: TGIshib <justzeddicus@gmail.com>
Date: Sat, 27 Aug 2016 00:42:06 +0300
Subject: [PATCH] Update idl_gen_general.cpp

---
 src/idl_gen_general.cpp | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/src/idl_gen_general.cpp b/src/idl_gen_general.cpp
index 274a22f5..f8d54fe7 100644
--- a/src/idl_gen_general.cpp
+++ b/src/idl_gen_general.cpp
@@ -703,7 +703,7 @@ std::string GenLookupKeyGetter(flatbuffers::FieldDef *key_field) {
     auto get_val = GenGetter(key_field->value.type) +
       "(" + GenOffsetGetter(key_field) + ")";
     if (lang_.language == IDLOptions::kCSharp) {
-      key_getter += "int comp = " + get_val + ".CompateTo(key);\n";
+      key_getter += "int comp = " + get_val + ".CompareTo(key);\n";
     } else {
       key_getter += GenTypeGet(key_field->value.type) + " val = ";
       key_getter += get_val + ";\n";
@@ -1212,7 +1212,8 @@ void GenStruct(StructDef &struct_def, std::string *code_ptr) {
       code += "); }\n";
     }
   }
-  if (struct_def.has_key) {
+  if (struct_def.has_key && (lang_.language == IDLOptions::kJava ||
+    lang_.language == IDLOptions::kCSharp)) {
     if (lang_.language == IDLOptions::kJava) {
       code += "\n  @Override\n  protected int keysCompare(";
       code += "Integer o1, Integer o2, ByteBuffer _bb) {";
@@ -1234,11 +1235,13 @@ void GenStruct(StructDef &struct_def, std::string *code_ptr) {
     code += "ookupByKey(" + GenVectorOffsetType();
     code += " vectorOffset, " + GenTypeGet(key_field->value.type);
     code += " key, ByteBuffer bb) {\n";
-    code += "    byte[] byteKey = ";
-    if (lang_.language == IDLOptions::kJava)
-      code += "key.getBytes(Table.UTF8_CHARSET.get());\n";
-    else
-      code += "System.Text.Encoding.UTF8.GetBytes(key);\n";
+    if (key_field->value.type.base_type == BASE_TYPE_STRING) {
+      code += "    byte[] byteKey = ";
+      if (lang_.language == IDLOptions::kJava)
+        code += "key.getBytes(Table.UTF8_CHARSET.get());\n";
+      else
+        code += "System.Text.Encoding.UTF8.GetBytes(key);\n";
+    }
     code += "    int vectorLocation = " + GenByteBufferLength("bb");
     code += " - vectorOffset";
     if (lang_.language == IDLOptions::kCSharp) code += ".Value";
-- 
GitLab