From 047ce7b95a2332ba1d298c0d8b5e07d4900074ba Mon Sep 17 00:00:00 2001 From: Humza <204067870+SirHumza@users.noreply.github.com> Date: Fri, 25 Sep 2026 18:38:02 +0200 Subject: [PATCH] fix(ci): gcc -std=c11 fixes for ubuntu runners: POSIX macro for strdup, brace split misleading if-guards in jsonlite --- orbisrpc/jsonlite.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/orbisrpc/jsonlite.c b/orbisrpc/jsonlite.c index 2b1d361..134241b 100644 --- a/orbisrpc/jsonlite.c +++ b/orbisrpc/jsonlite.c @@ -1,4 +1,5 @@ /* jsonlite.c */ +#define _POSIX_C_SOURCE 200809L /* strdup must be visible under -std=c11 (glibc) */ #include "jsonlite.h" #include #include @@ -44,7 +45,9 @@ static jl_val_t *parse_string(jl_parse_t *p) { unsigned cp=0; for(int i=0;i<4;i++){char h=*p->cur++; cp<<=4; if(h>='0'&&h<='9')cp|=(h-'0'); else if(h>='a'&&h<='f')cp|=(h-'a'+10); else if(h>='A'&&h<='F')cp|=(h-'A'+10); else {p->err=1;break;}} - if(p->err)break; char outb[5]; int on=0; if(cp<0x80)outb[on++]=cp; + if(p->err)break; + char outb[5]; int on=0; + if(cp<0x80)outb[on++]=cp; else if(cp<0x800){outb[on++]=(char)(0xC0|(cp>>6));outb[on++]=(char)(0x80|(cp&0x3F));} else {outb[on++]=(char)(0xE0|(cp>>12));outb[on++]=(char)(0x80|((cp>>6)&0x3F));outb[on++]=(char)(0x80|(cp&0x3F));} if(len+(size_t)on+1>cap){ @@ -255,7 +258,8 @@ static int emit(jl_val_t *v, char **out, size_t *cap, size_t *len){ switch(v->type){ case JL_NULL: { size_t l=4; if(ensure_capacity(out,cap,*len+l+1)<0)return -1; memcpy(*out+*len,"null",4);*len+=4; return 0; } case JL_BOOL: { const char*s=v->num?"true":"false"; size_t l=strlen(s); - if(ensure_capacity(out,cap,*len+l+1)<0)return -1; memcpy(*out+*len,s,l);*len+=l; return 0; } + if(ensure_capacity(out,cap,*len+l+1)<0)return -1; + memcpy(*out+*len,s,l);*len+=l; return 0; } case JL_NUMBER: if(v->num_is_int) snprintf(buf,sizeof buf,"%lld",(long long)v->inum); else snprintf(buf,sizeof buf,"%.17g",v->num); break; case JL_STRING: return escstr(v->str,out,cap,len); case JL_ARRAY:{