Skip to content

Fix division by 0#389

Merged
hannesa2 merged 1 commit intomasterfrom
FixDivisonNull
Jul 30, 2025
Merged

Fix division by 0#389
hannesa2 merged 1 commit intomasterfrom
FixDivisonNull

Conversation

@hannesa2
Copy link
Collaborator

No description provided.

@hannesa2 hannesa2 added the bugfix Something isn't working label Jul 30, 2025
@hannesa2 hannesa2 merged commit ee2e8c4 into master Jul 30, 2025
2 checks passed
@hannesa2 hannesa2 deleted the FixDivisonNull branch July 30, 2025 13:12
@devemux86
Copy link

@hannesa2

Couldn't the check for empty size be at Chart#L758 where there is already the check for null?

@hannesa2
Copy link
Collaborator Author

Yes, could be.
I see, you didn't see a crash, it's just theoretical.
I guess the fix is not wrong, but probably pointless

@devemux86
Copy link

@hannesa2

I see, you didn't see a crash, it's just theoretical.

3.1.0.29 crashed and had to revert to 3.1.0.28.
That's why I looked up what change caused it.

3.1.0.30 seems to work again.

@Paget96
Copy link

Paget96 commented Sep 13, 2025

3.1.0.30 Not working here, there are no zero entries
2025-09-13 12:05:45.720 2662-2662 aaaeeeee D 83.0
2025-09-13 12:05:45.720 2662-2662 aaaeeeee D 5000
2025-09-13 12:05:45.720 2662-2662 aaaeeeee D 167.0
2025-09-13 12:05:45.720 2662-2662 aaaeeeee D 5000
2025-09-13 12:05:45.720 2662-2662 aaaeeeee D 243.0
2025-09-13 12:05:45.720 2662-2662 aaaeeeee D 5000

java.lang.ArithmeticException: divide by zero at com.github.mikephil.charting.charts.CombinedChart.drawMarkers(CombinedChart.java:264) at com.github.mikephil.charting.charts.BarLineChartBase.onDraw(BarLineChartBase.java:301) at android.view.View.draw(View.java:26057) at android.view.View.updateDisplayListIfDirty(View.java:24858) at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4592) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4565) at android.view.View.updateDisplayListIfDirty(View.java:24790) at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4592) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4565) at android.view.View.updateDisplayListIfDirty(View.java:24790) at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4592) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4565) at android.view.View.updateDisplayListIfDirty(View.java:24790) at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4592) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4565) at android.view.View.updateDisplayListIfDirty(View.java:24790) at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4592) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4565) at android.view.View.updateDisplayListIfDirty(View.java:24790) at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4592) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4565) at android.view.View.updateDisplayListIfDirty(View.java:24790) at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4592) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4565) at android.view.View.updateDisplayListIfDirty(View.java:24790) at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4592) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4565) at android.view.View.updateDisplayListIfDirty(View.java:24790) at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4592) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4565) at android.view.View.updateDisplayListIfDirty(View.java:24790) at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4592) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4565) at android.view.View.updateDisplayListIfDirty(View.java:24790) at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4592) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4565) at android.view.View.updateDisplayListIfDirty(View.java:24790) at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4592) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4565) at android.view.View.updateDisplayListIfDirty(View.java:24790) at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4592) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4565) at android.view.View.updateDisplayListIfDirty(View.java:24790) at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4592) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4565) at android.view.View.updateDisplayListIfDirty(View.java:24790) at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:732) at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:741) at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:851) at android.view.ViewRootImpl.draw(ViewRootImpl.java:6521) at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:6138) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:5048) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:3568) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:11611) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1747) 2025-09-13 12:05:45.964 2662-2662 AndroidRuntime com.paget96.batteryguru E at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1756) (Ask Gemini) at android.view.Choreographer.doCallbacks(Choreographer.java:1270) at android.view.Choreographer.doFrame(Choreographer.java:1173) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1710) at android.os.Handler.handleCallback(Handler.java:959) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loopOnce(Looper.java:249) at android.os.Looper.loop(Looper.java:337) at android.app.ActivityThread.main(ActivityThread.java:9638) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:615) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)

Fix:

setDrawMarkers(false)

If no markers are used set this in chart configuration.
This is true by default!

@hannesa2
Copy link
Collaborator Author

Ok, I added an additionally fix #412 for line com.github.mikephil.charting.charts.CombinedChart.drawMarkers(CombinedChart.java:264)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bugfix Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

Comments