Skip to content

Commit

Permalink
[c] Remove va_copy from FuString_Format.
Browse files Browse the repository at this point in the history
Shorter C code.
  • Loading branch information
pfusik committed Dec 9, 2024
1 parent ab0c5ae commit ccafd8a
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 32 deletions.
15 changes: 7 additions & 8 deletions GenC.fu
Original file line number Diff line number Diff line change
Expand Up @@ -3642,15 +3642,14 @@ public class GenC : GenCCpp
WriteNewLine();
WriteLine("static char *FuString_Format(const char *format, ...)");
OpenBlock();
WriteLine("va_list args1;");
WriteLine("va_start(args1, format);");
WriteLine("va_list args2;");
WriteLine("va_copy(args2, args1);");
WriteLine("size_t len = vsnprintf(NULL, 0, format, args1) + 1;");
WriteLine("va_end(args1);");
WriteLine("va_list args;");
WriteLine("va_start(args, format);");
WriteLine("size_t len = vsnprintf(NULL, 0, format, args) + 1;");
WriteLine("va_end(args);");
WriteLine("va_start(args, format);");
WriteLine("char *str = malloc(len);");
WriteLine("vsnprintf(str, len, format, args2);");
WriteLine("va_end(args2);");
WriteLine("vsnprintf(str, len, format, args);");
WriteLine("va_end(args);");
WriteLine("return str;");
CloseBlock();
}
Expand Down
15 changes: 7 additions & 8 deletions libfut.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13088,15 +13088,14 @@ void GenC::writeLibrary()
writeNewLine();
writeLine("static char *FuString_Format(const char *format, ...)");
openBlock();
writeLine("va_list args1;");
writeLine("va_start(args1, format);");
writeLine("va_list args2;");
writeLine("va_copy(args2, args1);");
writeLine("size_t len = vsnprintf(NULL, 0, format, args1) + 1;");
writeLine("va_end(args1);");
writeLine("va_list args;");
writeLine("va_start(args, format);");
writeLine("size_t len = vsnprintf(NULL, 0, format, args) + 1;");
writeLine("va_end(args);");
writeLine("va_start(args, format);");
writeLine("char *str = malloc(len);");
writeLine("vsnprintf(str, len, format, args2);");
writeLine("va_end(args2);");
writeLine("vsnprintf(str, len, format, args);");
writeLine("va_end(args);");
writeLine("return str;");
closeBlock();
}
Expand Down
15 changes: 7 additions & 8 deletions libfut.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13318,15 +13318,14 @@ void WriteLibrary()
WriteNewLine();
WriteLine("static char *FuString_Format(const char *format, ...)");
OpenBlock();
WriteLine("va_list args1;");
WriteLine("va_start(args1, format);");
WriteLine("va_list args2;");
WriteLine("va_copy(args2, args1);");
WriteLine("size_t len = vsnprintf(NULL, 0, format, args1) + 1;");
WriteLine("va_end(args1);");
WriteLine("va_list args;");
WriteLine("va_start(args, format);");
WriteLine("size_t len = vsnprintf(NULL, 0, format, args) + 1;");
WriteLine("va_end(args);");
WriteLine("va_start(args, format);");
WriteLine("char *str = malloc(len);");
WriteLine("vsnprintf(str, len, format, args2);");
WriteLine("va_end(args2);");
WriteLine("vsnprintf(str, len, format, args);");
WriteLine("va_end(args);");
WriteLine("return str;");
CloseBlock();
}
Expand Down
15 changes: 7 additions & 8 deletions libfut.js
Original file line number Diff line number Diff line change
Expand Up @@ -13794,15 +13794,14 @@ export class GenC extends GenCCpp
this.writeNewLine();
this.writeLine("static char *FuString_Format(const char *format, ...)");
this.openBlock();
this.writeLine("va_list args1;");
this.writeLine("va_start(args1, format);");
this.writeLine("va_list args2;");
this.writeLine("va_copy(args2, args1);");
this.writeLine("size_t len = vsnprintf(NULL, 0, format, args1) + 1;");
this.writeLine("va_end(args1);");
this.writeLine("va_list args;");
this.writeLine("va_start(args, format);");
this.writeLine("size_t len = vsnprintf(NULL, 0, format, args) + 1;");
this.writeLine("va_end(args);");
this.writeLine("va_start(args, format);");
this.writeLine("char *str = malloc(len);");
this.writeLine("vsnprintf(str, len, format, args2);");
this.writeLine("va_end(args2);");
this.writeLine("vsnprintf(str, len, format, args);");
this.writeLine("va_end(args);");
this.writeLine("return str;");
this.closeBlock();
}
Expand Down

0 comments on commit ccafd8a

Please sign in to comment.