diff options
author | Eugene Kliuchnikov <eustas@google.com> | 2017-09-20 15:02:01 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-20 15:02:01 +0200 |
commit | c60563591a9a86196f19987c81dde4384a088861 (patch) | |
tree | 062c36d7bced8570208a938d1c583063aa242919 | |
parent | b6a017492e591e32c9d7571bc7cdba6291798460 (diff) | |
download | brotli-c60563591a9a86196f19987c81dde4384a088861.zip brotli-c60563591a9a86196f19987c81dde4384a088861.tar.gz brotli-c60563591a9a86196f19987c81dde4384a088861.tar.bz2 |
Fix API documentation + theoretical NPEs (#602)v1.0.0
-rwxr-xr-x | c/include/brotli/encode.h | 10 | ||||
-rwxr-xr-x | c/tools/brotli.c | 12 | ||||
-rwxr-xr-x | docs/encode.h.3 | 6 |
3 files changed, 17 insertions, 11 deletions
diff --git a/c/include/brotli/encode.h b/c/include/brotli/encode.h index 4bb76e1..e4cf18b 100755 --- a/c/include/brotli/encode.h +++ b/c/include/brotli/encode.h @@ -72,7 +72,9 @@ typedef enum BrotliEncoderOperation { * Actual flush is performed when input stream is depleted and there is enough * space in output stream. This means that client should repeat * ::BROTLI_OPERATION_FLUSH operation until @p available_in becomes @c 0, and - * ::BrotliEncoderHasMoreOutput returns ::BROTLI_FALSE. + * ::BrotliEncoderHasMoreOutput returns ::BROTLI_FALSE. If output is acquired + * via ::BrotliEncoderTakeOutput, then operation should be repeated after + * output buffer is drained. * * @warning Until flush is complete, client @b SHOULD @b NOT swap, * reduce or extend input stream. @@ -86,8 +88,10 @@ typedef enum BrotliEncoderOperation { * * Actual finalization is performed when input stream is depleted and there is * enough space in output stream. This means that client should repeat - * ::BROTLI_OPERATION_FLUSH operation until @p available_in becomes @c 0, and - * ::BrotliEncoderHasMoreOutput returns ::BROTLI_FALSE. + * ::BROTLI_OPERATION_FINISH operation until @p available_in becomes @c 0, and + * ::BrotliEncoderHasMoreOutput returns ::BROTLI_FALSE. If output is acquired + * via ::BrotliEncoderTakeOutput, then operation should be repeated after + * output buffer is drained. * * @warning Until finalization is complete, client @b SHOULD @b NOT swap, * reduce or extend input stream. diff --git a/c/tools/brotli.c b/c/tools/brotli.c index f23917a..497ae65 100755 --- a/c/tools/brotli.c +++ b/c/tools/brotli.c @@ -174,11 +174,11 @@ static Command ParseParams(Context* params) { for (i = 1; i < argc; ++i) { const char* arg = argv[i]; - size_t arg_len = strlen(arg); - /* C99 5.1.2.2.1: "members argv[0] through argv[argc-1] inclusive shall contain pointers to strings"; NULL and 0-length are not forbidden. */ - if (!arg || arg_len == 0) { + size_t arg_len = arg ? strlen(arg) : 0; + + if (arg_len == 0) { params->not_input_indices[next_option_index++] = i; continue; } @@ -588,7 +588,9 @@ static BROTLI_BOOL OpenFiles(Context* context) { static BROTLI_BOOL CloseFiles(Context* context, BROTLI_BOOL success) { BROTLI_BOOL is_ok = BROTLI_TRUE; if (!context->test_integrity && context->fout) { - if (!success) unlink(context->current_output_path); + if (!success && context->current_output_path) { + unlink(context->current_output_path); + } if (fclose(context->fout) != 0) { if (success) { fprintf(stderr, "fclose failed [%s]: %s\n", @@ -612,7 +614,7 @@ static BROTLI_BOOL CloseFiles(Context* context, BROTLI_BOOL success) { is_ok = BROTLI_FALSE; } } - if (success && context->junk_source) { + if (success && context->junk_source && context->current_input_path) { unlink(context->current_input_path); } diff --git a/docs/encode.h.3 b/docs/encode.h.3 index 01b4f4f..dd420bb 100755 --- a/docs/encode.h.3 +++ b/docs/encode.h.3 @@ -1,4 +1,4 @@ -.TH "encode.h" 3 "Wed Aug 2 2017" "Brotli" \" -*- nroff -*- +.TH "encode.h" 3 "Wed Sep 20 2017" "Brotli" \" -*- nroff -*- .ad l .nh .SH NAME @@ -210,7 +210,7 @@ Operations that can be performed by streaming encoder\&. Process input\&. Encoder may postpone producing output, until it has processed enough input\&. .TP \fB\fIBROTLI_OPERATION_FLUSH \fP\fP -Produce output for all processed input\&. Actual flush is performed when input stream is depleted and there is enough space in output stream\&. This means that client should repeat \fBBROTLI_OPERATION_FLUSH\fP operation until \fCavailable_in\fP becomes \fC0\fP, and \fBBrotliEncoderHasMoreOutput\fP returns \fBBROTLI_FALSE\fP\&. +Produce output for all processed input\&. Actual flush is performed when input stream is depleted and there is enough space in output stream\&. This means that client should repeat \fBBROTLI_OPERATION_FLUSH\fP operation until \fCavailable_in\fP becomes \fC0\fP, and \fBBrotliEncoderHasMoreOutput\fP returns \fBBROTLI_FALSE\fP\&. If output is acquired via \fBBrotliEncoderTakeOutput\fP, then operation should be repeated after output buffer is drained\&. .PP \fBWarning:\fP .RS 4 @@ -220,7 +220,7 @@ Until flush is complete, client \fBSHOULD\fP \fBNOT\fP swap, reduce or extend in When flush is complete, output data will be sufficient for decoder to reproduce all the given input\&. .TP \fB\fIBROTLI_OPERATION_FINISH \fP\fP -Finalize the stream\&. Actual finalization is performed when input stream is depleted and there is enough space in output stream\&. This means that client should repeat \fBBROTLI_OPERATION_FLUSH\fP operation until \fCavailable_in\fP becomes \fC0\fP, and \fBBrotliEncoderHasMoreOutput\fP returns \fBBROTLI_FALSE\fP\&. +Finalize the stream\&. Actual finalization is performed when input stream is depleted and there is enough space in output stream\&. This means that client should repeat \fBBROTLI_OPERATION_FINISH\fP operation until \fCavailable_in\fP becomes \fC0\fP, and \fBBrotliEncoderHasMoreOutput\fP returns \fBBROTLI_FALSE\fP\&. If output is acquired via \fBBrotliEncoderTakeOutput\fP, then operation should be repeated after output buffer is drained\&. .PP \fBWarning:\fP .RS 4 |