{"record":{"id":"ed87a8fb5233db1a","repo":"DrKLO/Telegram","slug":"required-arguments","errorCode":null,"errorMessage":"Required arguments:\n","messagePattern":"Required arguments:\n","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"TMessagesProj/jni/mozjpeg/jpegyuv.c","lineNumber":64,"sourceCode":"  FILE *jpg_fd;\n  int luma_width;\n  int luma_height;\n  int chroma_width;\n  int chroma_height;\n  int frame_width;\n  int yuv_size;\n  JSAMPLE *jpg_buffer;\n  JSAMPROW yrow_pointer[16];\n  JSAMPROW cbrow_pointer[8];\n  JSAMPROW crrow_pointer[8];\n  JSAMPROW *plane_pointer[3];\n  unsigned char *yuv_buffer;\n  int x;\n  int y;\n  FILE *yuv_fd;\n\n  if (argc != 3) {\n    fprintf(stderr, \"Required arguments:\\n\");\n    fprintf(stderr, \"1. Path to JPG input file\\n\");\n    fprintf(stderr, \"2. Path to YUV output file\\n\");\n    return 1;\n  }\n\n  /* Will check these for validity when opening via 'fopen'. */\n  jpg_path = argv[1];\n  yuv_path = argv[2];\n\n  cinfo.err = jpeg_std_error(&jerr);\n  jpeg_create_decompress(&cinfo);\n\n  jpg_fd = fopen(jpg_path, \"rb\");\n  if (!jpg_fd) {\n    fprintf(stderr, \"Invalid path to JPEG file!\\n\");\n    return 1;\n  }\n","sourceCodeStart":46,"sourceCodeEnd":82,"githubUrl":"https://github.com/DrKLO/Telegram/blob/45ab8f4308496e1f01026a97fcdb0d58a5274474/TMessagesProj/jni/mozjpeg/jpegyuv.c#L46-L82","documentation":"jpegyuv checks argc != 3 at jpegyuv.c:63, expecting exactly two positional arguments (input JPEG path and output YUV path) plus the program name. If the argument count is wrong, it prints a usage banner starting with 'Required arguments:' and returns 1. This is the header line of that usage message.","triggerScenarios":"Invoking jpegyuv with zero, one, or three+ positional arguments. Forgetting one of the two required arguments. Passing flags that jpegyuv does not recognize (it has no option parser, so flags count as positional args).","commonSituations":"Wrapper script or JNI caller passes only the input path and forgets the output path. Extra whitespace in argument splitting produces empty args. A caller passes a `-v` or `--help` flag that jpegyuv doesn't support.","solutions":["Always pass exactly two arguments: the JPEG input path and the YUV output path","In a JNI wrapper, validate argc before calling jpegyuv's main","In a shell script, use quotes and check $1 and $2 are non-empty"],"exampleFix":"// before (JNI)\njpegyuv_main(1, {\"jpegyuv\"});\n\n// after\nchar *argv[] = {\"jpegyuv\", jpg_path, yuv_path};\nif (jpg_path == NULL || yuv_path == NULL) return -1;\njpegyuv_main(3, argv);","handlingStrategy":"validation","validationCode":"// Validate argument count before calling jpegyuv main\nint safe_jpegyuv_main(int argc, char **argv) {\n    if (argc != 3) {\n        fprintf(stderr, \"Usage: %s <input.jpg> <output.yuv>\\n\", argv[0]);\n        return 1;\n    }\n    if (argv[1] == NULL || argv[1][0] == '\\0' ||\n        argv[2] == NULL || argv[2][0] == '\\0') {\n        fprintf(stderr, \"Arguments must not be empty\\n\");\n        return 1;\n    }\n    return jpegyuv_main(argc, argv);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Validate argc == 3 in the JNI wrapper before calling jpegyuv","Reject empty or NULL argument strings","Document the exact argument contract: program, input JPEG, output YUV"],"tags":["jpeg","jpegyuv","cli-arguments","usage"],"backgroundTag":null,"analyzedSha":"45ab8f4308496e1f01026a97fcdb0d58a5274474","analyzedAt":"2026-08-14T05:19:30.815Z","schemaVersion":2},"datasetVersion":"2026-08-14T10:17:34.591Z"}