DraqueT / PolyGlot

PolyGlot is a conlang construction toolkit.
MIT License
389 stars 44 forks source link

[BETA]: String out of bound error #1197

Closed TrapinchO closed 2 years ago

TrapinchO commented 2 years ago

Polyglot version: Windows BETA from 18th May 2022 (latest as of writing this)

After reinstalling Polyglot (due to #1195), opening it and clicking new language I got an error begin 0, end -1, length 65 (didn't screenshot the modal, sorry).

Steps to reproduce: unknown

java.version : 17
java.vendor : Oracle Corporation
java.vendor.url : https://java.oracle.com/
java.vm.specification.version : 17
java.vm.specification.name : Java Virtual Machine Specification
java.vm.version : 17+35-2724
java.vm.vendor : Oracle Corporation
java.vm.name : OpenJDK 64-Bit Server VM
java.specification.version : 17
java.specification.vendor : Oracle Corporation
java.specification.name : Java Platform API Specification
java.class.version : 61.0
java.ext.dirs : null
os.name : Windows 10
os.arch : amd64
os.version : 10.0

-=-=-=-=-=-=-
2022/07/26 10:46:24-begin 0, end -1, length 65-java.lang.StringIndexOutOfBoundsException
java.lang.StringIndexOutOfBoundsException: begin 0, end -1, length 65
    at java.base/java.lang.String.checkBoundsBeginEnd(String.java:4601)
    at java.base/java.lang.String.substring(String.java:2704)
    at org.darisadesigns.polyglotlina.polyglot@3.6/org.darisadesigns.polyglotlina.Desktop.CustomControls.PTextPane.isDefaultText(PTextPane.java:321)
    at org.darisadesigns.polyglotlina.polyglot@3.6/org.darisadesigns.polyglotlina.Desktop.CustomControls.PTextPane.setText(PTextPane.java:163)
    at org.darisadesigns.polyglotlina.polyglot@3.6/org.darisadesigns.polyglotlina.Desktop.CustomControls.PTextPane.setDefault(PTextPane.java:356)
    at org.darisadesigns.polyglotlina.polyglot@3.6/org.darisadesigns.polyglotlina.Screens.ScrLexicon.populateProperties(ScrLexicon.java:1347)
    at org.darisadesigns.polyglotlina.polyglot@3.6/org.darisadesigns.polyglotlina.Screens.ScrLexicon.lambda$updateAllValues$2(ScrLexicon.java:280)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:771)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:741)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
DraqueT commented 2 years ago

Good catch! Had some unsafe code there and this is an easy fix. :)