22#include <parser.h>
33#include <string.h>
44#include <utf8.h>
5+ #include <stddef.h>
56
67#if defined(_WIN32 )
78#define strncasecmp _strnicmp
@@ -290,10 +291,10 @@ static cmark_node *match(cmark_syntax_extension *ext, cmark_parser *parser,
290291 // inline was finished in inlines.c.
291292}
292293
293- static bool validate_protocol (char protocol [], uint8_t * data , int rewind , int max_rewind ) {
294+ static bool validate_protocol (char protocol [], uint8_t * data , size_t rewind , size_t max_rewind ) {
294295 size_t len = strlen (protocol );
295296
296- if (len > (size_t )( max_rewind - rewind )) {
297+ if (len > (max_rewind - rewind )) {
297298 return false;
298299 }
299300
@@ -302,11 +303,11 @@ static bool validate_protocol(char protocol[], uint8_t *data, int rewind, int ma
302303 return false;
303304 }
304305
305- if (len == (size_t )( max_rewind - rewind )) {
306+ if (len == (max_rewind - rewind )) {
306307 return true;
307308 }
308309
309- char prev_char = data [- rewind - len - 1 ];
310+ char prev_char = data [- (( ptrdiff_t ) rewind ) - len - 1 ];
310311
311312 // Make sure the character before the protocol is non-alphanumeric
312313 return !cmark_isalnum (prev_char );
@@ -421,7 +422,7 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) {
421422 cmark_node * link_text = cmark_node_new_with_mem (CMARK_NODE_TEXT , parser -> mem );
422423 cmark_chunk email = cmark_chunk_dup (
423424 & detached_chunk ,
424- start + offset + max_rewind - rewind ,
425+ ( bufsize_t )( start + offset + max_rewind - rewind ) ,
425426 (bufsize_t )(link_end + rewind ));
426427 cmark_chunk_to_cstr (parser -> mem , & email );
427428 link_text -> as .literal = email ;
@@ -436,7 +437,7 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text) {
436437
437438 cmark_node_insert_after (link_node , post );
438439
439- text -> as .literal = cmark_chunk_dup (& detached_chunk , start , offset + max_rewind - rewind );
440+ text -> as .literal = cmark_chunk_dup (& detached_chunk , ( bufsize_t ) start , ( bufsize_t )( offset + max_rewind - rewind ) );
440441 cmark_chunk_to_cstr (parser -> mem , & text -> as .literal );
441442
442443 text = post ;
0 commit comments