(In reply to Adrian Johnson from comment #78) > I agree that the two calls to doGetChars and updateHash should be merged but > I don't think a for loop is the best way to process loops where the > increment is not exactly the same on each iteration. Maybe something like > this: > > void FormFieldSignature::hashSignedByteRange(SignatureHandler *handler, > Goffset start, Goffset len) > { > const int CHUNK_SIZE = 4096; > unsigned char buffer[CHUNK_SIZE]; > Goffset i = 0; > int byte_count = CHUNK_SIZE; > > doc->getBaseStream()->setPos(start); > while (i < len) > { > if (i + CHUNK_SIZE > len) > byte_count = len - i; > > doc->getBaseStream()->doGetChars(byte_count, buffer); > handler->updateHash(buffer, byte_count); > i += byte_count; > } > }
I was thinking of something like doc->getBaseStream()->setPos(start); for (Goffset offset = 0; offset < len; offset += CHUNK_SIZE) { const int byte_count = min(CHUNK_SIZE, len - offset); doc->getBaseStream()->doGetChars(byte_count, buffer); handler->updateHash(buffer, byte_count); } to make the loop more regular as we don't care if offset > len instead of offset == len after the last iteration. (That code was not tested or even compiled.) > I don't mind if we fix all this later. It doesn't have to hold up the > initial release. Maybe if there is some external pressure to release this, but otherwise I'd propose polishing it now, since there is a certain momentum not to touch working code once it is released. Best regards, Adam. -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1085526 Title: ubuntu pdf doc viewer will not let me sign a document To manage notifications about this bug go to: https://bugs.launchpad.net/poppler/+bug/1085526/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs