@@ -724,10 +724,35 @@ private void onAdvancedPrintOptionsActivityResult(int resultCode, Intent data) {
724724 }
725725 }
726726
727+ // Handle selected page changes making sure they are in the doc.
727728 PrintDocumentInfo info = mPrintedDocument .getDocumentInfo ().info ;
728729 final int pageCount = (info != null ) ? getAdjustedPageCount (info ) : 0 ;
729730 PageRange [] pageRanges = printJobInfo .getPages ();
730- updateSelectedPages (pageRanges , pageCount );
731+ if (pageRanges != null && pageCount > 0 ) {
732+ pageRanges = PageRangeUtils .normalize (pageRanges );
733+
734+ List <PageRange > validatedList = new ArrayList <>();
735+ final int rangeCount = pageRanges .length ;
736+ for (int i = 0 ; i < rangeCount ; i ++) {
737+ PageRange pageRange = pageRanges [i ];
738+ if (pageRange .getEnd () >= pageCount ) {
739+ final int rangeStart = pageRange .getStart ();
740+ final int rangeEnd = pageCount - 1 ;
741+ if (rangeStart <= rangeEnd ) {
742+ pageRange = new PageRange (rangeStart , rangeEnd );
743+ validatedList .add (pageRange );
744+ }
745+ break ;
746+ }
747+ validatedList .add (pageRange );
748+ }
749+
750+ if (!validatedList .isEmpty ()) {
751+ PageRange [] validatedArray = new PageRange [validatedList .size ()];
752+ validatedList .toArray (validatedArray );
753+ updateSelectedPages (validatedArray , pageCount );
754+ }
755+ }
731756
732757 // Update the content if needed.
733758 if (canUpdateDocument ()) {
0 commit comments