Oops. Yep, I missed that one. Thanks.

It is committed.

-> richard

Olivier Gruber wrote:
Just stumbled on a small bug

    public FindEntriesEnumeration(Felix felix,
BundleImpl bundle, String path, String filePattern, boolean recurse)
    {
        m_felix = felix;
        m_bundle = bundle;
        m_path = path;
        m_enumeration = m_bundle.getInfo().getCurrentModule()
            .getContentLoader().getContent().getEntries();
        m_recurse = recurse;

        // Sanity check the parameters.
        if (m_path == null)
        {
throw new IllegalArgumentException("The path for findEntries() cannot be null.");
        }
        // Strip leading '/' if present.
        if ((m_path.length() > 0) && (m_path.charAt(0) == '/'))
        {
            m_path = m_path.substring(1);
        }
        // Add a '/' to the end if not present.
==> if ((m_path.length() > 0) && (m_path.charAt(path.length() - 1) != '/'))
        {                                           ****
            m_path = m_path + "/";
        }

        // File pattern defaults to "*" if not specified.
        filePattern = (filePattern == null) ? "*" : filePattern;

        m_filePattern = parseSubstring(filePattern);

        m_next = findNext();
    }

It should not mix path and m_path... on a path like /META-INF/Foo/ it fails raising a StringIndexOutOfBoundsException
Here is the fix:

==> if ((m_path.length() > 0) && (m_path.charAt(m_path.length() - 1) != '/'))
 _______

Cheers,
Olivier Gruber, Ph.D.
Persistent & Distributed Object Platforms and Frameworks
IBM TJ Watson Research Center


Reply via email to