Index: modules/prefs/src/test/java/org/apache/harmony/prefs/tests/java/util/prefs/AbstractPreferencesTest.java =================================================================== --- modules/prefs/src/test/java/org/apache/harmony/prefs/tests/java/util/prefs/AbstractPreferencesTest.java (revision 420760) +++ modules/prefs/src/test/java/org/apache/harmony/prefs/tests/java/util/prefs/AbstractPreferencesTest.java (working copy) @@ -1759,6 +1759,14 @@ } } + public void testLongPath() throws Exception { + try { + assertFalse(localPreferences.nodeExists("ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd")); + } catch(Throwable e) { + fail(); + } + } + public static class MockPreferenceChangeListener implements PreferenceChangeListener { private int changed = 0; Index: modules/prefs/src/main/java/java/util/prefs/AbstractPreferences.java =================================================================== --- modules/prefs/src/main/java/java/util/prefs/AbstractPreferences.java (revision 420760) +++ modules/prefs/src/main/java/java/util/prefs/AbstractPreferences.java (working copy) @@ -648,8 +648,12 @@ startNode = this; } } - Preferences result = startNode.nodeImpl(name, false); - return null == result ? false : true; + try { + Preferences result = startNode.nodeImpl(name, false); + return null == result ? false : true; + } catch(IllegalArgumentException e) { + return false; + } } /*