https://issues.apache.org/bugzilla/show_bug.cgi?id=48060

           Summary: wrong implementation of peek() method of
                    JIoEndpoint.WorkerStack class
           Product: Tomcat 7
           Version: trunk
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Catalina
        AssignedTo: dev@tomcat.apache.org
        ReportedBy: qingyang...@qunar.com


/**
         * Get the first object out of the queue, Return null if the queue
         * is empty.
         */
        public Worker peek() {
            return workers[end];
        }


should be:

         /**
         * Get the first object out of the queue, Return null if the queue
         * is empty.
         */
        public Worker peek() {
            if (end > 0) {
                return workers[end - 1];
            }
            return null;
        }

please refer to the pop() method (apart from pop()'s side effect, pop() and
peek() should return the same result):

        /**
         * Get the first object out of the queue. Return null if the queue
         * is empty. 
         */
        public Worker pop() {
            if (end > 0) {
                return workers[--end];
            }
            return null;
        }


'end' denotes the index beyond the last element, not the index of the last
element itself. That is why the variable of 'end' is assigned a zero value at
first.

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to