diff --git a/src/component/axisPointer/findPointFromSeries.js b/src/component/axisPointer/findPointFromSeries.js index 47759000fa2f0ffb1b44c4991df750b9926ccfc2..57acd6609b22ea1c0c280be1a0f8237c92f89ab2 100644 --- a/src/component/axisPointer/findPointFromSeries.js +++ b/src/component/axisPointer/findPointFromSeries.js @@ -18,7 +18,7 @@ export default function (finder, ecModel) { var data = seriesModel.getData(); var dataIndex = modelUtil.queryDataIndex(data, finder); - if (dataIndex == null || zrUtil.isArray(dataIndex)) { + if (dataIndex == null || dataIndex < 0 || zrUtil.isArray(dataIndex)) { return {point: []}; } diff --git a/src/data/List.js b/src/data/List.js index 530f11b808318e86b2d2b810d98758c82af8adfa..0ebe9dd86c1a8b78f39555f0e14c7337d11c3f80 100644 --- a/src/data/List.js +++ b/src/data/List.js @@ -838,17 +838,21 @@ listProto.indexOfRawIndex = function (rawIndex) { return rawIndex; } + if (rawIndex >= this._rawCount || rawIndex < 0) { + return -1; + } + // Indices are ascending var indices = this._indices; // If rawIndex === dataIndex var rawDataIndex = indices[rawIndex]; - if (rawDataIndex != null && rawDataIndex === rawIndex) { + if (rawDataIndex != null && rawDataIndex < this._count && rawDataIndex === rawIndex) { return rawIndex; } var left = 0; - var right = indices.length - 1; + var right = this._count - 1; while (left <= right) { var mid = (left + right) / 2 | 0; if (indices[mid] < rawIndex) { diff --git a/src/echarts.js b/src/echarts.js index 4b1dc781f619375a1be3b5f259792b6d50b19f60..1a8f5ee438366e86c601dab061e352e2736f3941 100644 --- a/src/echarts.js +++ b/src/echarts.js @@ -1006,6 +1006,9 @@ function updateDirectly(ecIns, method, payload, mainType, subType) { // broadcast if (!mainType) { + // FIXME + // Chart will not be update directly here, except set dirty. + // But there is no such scenario now. each(ecIns._componentsViews.concat(ecIns._chartsViews), callView); return; }