IGNITE-1282: Fixed JVM crash in portable builder caused by incorrect position calculation.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/f7fdc185 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/f7fdc185 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/f7fdc185 Branch: refs/heads/ignite-1753-1282 Commit: f7fdc185250fbe77417b0165566f44b6eee34955 Parents: 178e913 Author: thatcoach <[email protected]> Authored: Wed Nov 4 10:03:49 2015 +0300 Committer: thatcoach <[email protected]> Committed: Wed Nov 4 10:03:49 2015 +0300 ---------------------------------------------------------------------- .../ignite/internal/portable/builder/PortableBuilderImpl.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/f7fdc185/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java index a28a908..d7ec6b3 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java @@ -410,20 +410,15 @@ public class PortableBuilderImpl implements PortableBuilder { // Get field length. int fieldLen; - if (footerPos + 4 + fieldOffsetSize == footerEnd) { + if (footerPos + 4 + fieldOffsetSize == footerEnd) // This is the last field, compare to raw offset. fieldLen = rawPos - fieldPos; - - fieldLen = fieldLen * 1; - } else { // Field is somewhere in the middle, get difference with the next offset. int nextFieldOffset = PortableUtils.fieldOffsetRelative(reader, footerPos + 4 + fieldOffsetSize + 4, fieldOffsetSize); fieldLen = nextFieldOffset - fieldOffset; - - fieldLen = fieldLen * 1; } return F.t(fieldPos, fieldLen);
