Title: Long strings are truncated on packing on Android 4.x · Issue #406 · msgpack/msgpack-java · GitHub
Open Graph Title: Long strings are truncated on packing on Android 4.x · Issue #406 · msgpack/msgpack-java
X Title: Long strings are truncated on packing on Android 4.x · Issue #406 · msgpack/msgpack-java
Description: The code below is an Android app that packs and then unpacks a map containing a single String member ("data"). On Android 4.4.2 this member is truncated when packing if it is 512 characters or longer; 511 or fewer and it works fine. The ...
Open Graph Description: The code below is an Android app that packs and then unpacks a map containing a single String member ("data"). On Android 4.4.2 this member is truncated when packing if it is 512 characters or long...
X Description: The code below is an Android app that packs and then unpacks a map containing a single String member ("data"). On Android 4.4.2 this member is truncated when packing if it is 512 characte...
Opengraph URL: https://github.com/msgpack/msgpack-java/issues/406
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Long strings are truncated on packing on Android 4.x","articleBody":"The code below is an Android app that packs and then unpacks a map containing a single String member (`\"data\"`). On Android 4.4.2 this member is truncated when packing if it is 512 characters or longer; 511 or fewer and it works fine.\r\n\r\nThe problem does not occur on Android 5.x or 6.x.\r\n\r\n```\r\npackage my.app;\r\n\r\nimport android.app.Activity;\r\nimport android.os.Bundle;\r\nimport android.widget.Toast;\r\nimport android.util.Log;\r\n\r\nimport java.io.ByteArrayOutputStream;\r\nimport java.io.IOException;\r\n\r\nimport org.msgpack.core.MessageFormat;\r\nimport org.msgpack.core.MessagePack;\r\nimport org.msgpack.core.MessagePacker;\r\nimport org.msgpack.core.MessageUnpacker;\r\n\r\npublic class MainActivity extends Activity\r\n{\r\n @Override\r\n public void onCreate(Bundle savedInstanceState)\r\n {\r\n super.onCreate(savedInstanceState);\r\n setContentView(R.layout.main);\r\n\r\n\t\ttry {\r\n\t\t\tTestClass testMessage = new TestClass();\r\n\t\t\ttestMessage.data = testString;\r\n\r\n\t\t\tbyte[] encoded = writeMsgpack(testMessage);\r\n\t\t\tTestClass decoded = readMsgpack(encoded);\r\n\r\n\t\t\tString received = decoded.data;\r\n\t\t\tif(received.equals(testString)) {\r\n\t\t\t\tToast.makeText(this, \"Test success\", Toast.LENGTH_LONG).show();\r\n\t\t\t} else {\r\n\t\t\t\tToast.makeText(this, \"Test fail\", Toast.LENGTH_LONG).show();\r\n\t\t\t\tLog.w(TAG, \"Decoded string data: \" + received);\r\n\t\t\t}\r\n\t\t} catch (Exception e) {\r\n\t\t\te.printStackTrace();\r\n\t\t}\r\n }\r\n\r\n\tstatic byte[] writeMsgpack(TestClass message) {\r\n\t\tbyte[] result = null;\r\n\t\ttry {\r\n\t\t\tByteArrayOutputStream out = new ByteArrayOutputStream();\r\n\t\t\tMessagePacker packer = MessagePack.newDefaultPacker(out);\r\n\t\t\tmessage.writeMsgpack(packer);\r\n\t\t\tpacker.flush();\r\n\t\t\tresult = out.toByteArray();\r\n\t\t} catch(IOException ioe) {\r\n\t\t\tioe.printStackTrace();\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\tstatic TestClass readMsgpack(byte[] packed) {\r\n\t\tTestClass result = null;\r\n\t\ttry {\r\n\t\t\tMessageUnpacker unpacker = MessagePack.newDefaultUnpacker(packed);\r\n\t\t\tresult = (new TestClass()).readMsgpack(unpacker);\r\n\t\t} catch(IOException ioe) {\r\n\t\t\tioe.printStackTrace();\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\tstatic class TestClass {\r\n\t\tpublic String data;\r\n\r\n\t\tvoid writeMsgpack(MessagePacker packer) throws IOException {\r\n\t\t\tpacker.packMapHeader(1);\r\n\t\t\tpacker.packString(\"data\");\r\n\t\t\tpacker.packString(data);\r\n\t\t}\r\n\r\n\t\tTestClass readMsgpack(MessageUnpacker unpacker) throws IOException {\r\n\t\t\tunpacker.unpackMapHeader();\r\n\t\t\tString fieldName = unpacker.unpackString();\r\n\t\t\tMessageFormat fieldFormat = unpacker.getNextFormat();\r\n\t\t\tif(fieldFormat.equals(MessageFormat.NIL)) {\r\n\t\t\t\tunpacker.unpackNil();\r\n\t\t\t} else if(fieldName.equals(\"data\")) {\r\n\t\t\t\tdata = unpacker.unpackString();\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t}\r\n\t}\r\n\r\n//\t/* succeeds */\r\n//\tprivate static String testString = \"0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890\";\r\n\r\n\t/* fails */\r\n \tprivate static String testString = \"01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901\";\r\n\r\n\tprivate static final String TAG = \"MainActivity\";\r\n}\r\n```\r\n","author":{"url":"https://github.com/paddybyers","@type":"Person","name":"paddybyers"},"datePublished":"2016-12-29T23:02:54.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":5},"url":"https://github.com/406/msgpack-java/issues/406"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:d4383eba-c89d-26ef-eea6-f65a6880c421 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | B88A:289E91:17E9097:22A8454:6A54D68B |
| html-safe-nonce | bac1140734836d472eccbcecf8a71fe6e875d8a6118c8b189a0fad683330a706 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCODhBOjI4OUU5MToxN0U5MDk3OjIyQTg0NTQ6NkE1NEQ2OEIiLCJ2aXNpdG9yX2lkIjoiMzE1MjY1ODAyNjAwNTMyMTM1NSIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 0ddc673afc45c33d3b577556aeea0a9d9855ddd85da80b954f81bd3069b6bb1b |
| hovercard-subject-tag | issue:198081689 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/msgpack/msgpack-java/406/issue_layout |
| twitter:image | https://opengraph.githubassets.com/3bd1bfc3b1972c3df41f1c67a454d90692bb6dfa30e79a0a7d168391860549db/msgpack/msgpack-java/issues/406 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/3bd1bfc3b1972c3df41f1c67a454d90692bb6dfa30e79a0a7d168391860549db/msgpack/msgpack-java/issues/406 |
| og:image:alt | The code below is an Android app that packs and then unpacks a map containing a single String member ("data"). On Android 4.4.2 this member is truncated when packing if it is 512 characters or long... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | paddybyers |
| hostname | github.com |
| expected-hostname | github.com |
| None | a556215b071af6609619e2bbe6f00bdfbf0812ad723b1ae6c301858a7a829f54 |
| turbo-cache-control | no-preview |
| go-import | github.com/msgpack/msgpack-java git https://github.com/msgpack/msgpack-java.git |
| octolytics-dimension-user_id | 198264 |
| octolytics-dimension-user_login | msgpack |
| octolytics-dimension-repository_id | 1971346 |
| octolytics-dimension-repository_nwo | msgpack/msgpack-java |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 1971346 |
| octolytics-dimension-repository_network_root_nwo | msgpack/msgpack-java |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 840b5d20d5a883c23cf56f5240b2c343d6cc0867 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width