oracle / opengrok

OpenGrok is a fast and usable source code search and cross reference engine, written in Java
http://oracle.github.io/opengrok/
Other
4.29k stars 739 forks source link

NPE when displaying a diff #4468

Closed vladak closed 8 months ago

vladak commented 8 months ago

When displaying a diff between two revisions in the latest master I am getting a NPE:

java.lang.NullPointerException
    at org.apache.jsp.diff_jsp._jspService(diff_jsp.java:722)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71)
    at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:770)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:467)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379)
...

Looking at the diff_jsp.java file in the Tomcat's work directory I see it happens here:

} else if (data.getRevision().size() == 0) { 
vladak commented 8 months ago

This corresponds to https://github.com/oracle/opengrok/blob/b996a179711b7d79a14107e75c51014eb82cbe8f/opengrok-web/src/main/webapp/diff.jsp#L137

In the debugger I see the revision field being null indeed.

vladak commented 8 months ago

Tracing the execution, this branch is taken: https://github.com/oracle/opengrok/blob/b996a179711b7d79a14107e75c51014eb82cbe8f/opengrok-web/src/main/java/org/opengrok/web/PageConfig.java#L351-L353 so the revisions are not filled.

vladak commented 8 months ago

After flipping the condition, the diff starts working.

vladak commented 8 months ago

Introduced in https://github.com/oracle/opengrok/commit/667c06e97558ade3d4fe429fdb915c0eb6f426f0