dll: fsp_fuse_opt_insert_arg/fsp_fuse_opt_free_args: testing

This commit is contained in:
Bill Zissimopoulos 2016-05-28 17:24:34 -07:00
parent c851e9c98e
commit 7ea13a967a
2 changed files with 8 additions and 3 deletions

View File

@ -23,6 +23,10 @@
#ifndef FUSE_OPT_H_ #ifndef FUSE_OPT_H_
#define FUSE_OPT_H_ #define FUSE_OPT_H_
#if !defined(WINFSP_DLL_INTERNAL)
#include <stdlib.h>
#endif
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif

View File

@ -431,7 +431,7 @@ FSP_FUSE_API int fsp_fuse_opt_insert_arg(struct fuse_args *args, int pos, const
if (0 == args) if (0 == args)
return -1; return -1;
if (!args->allocated && 0 != args->argv) if (0 != args->argv && !args->allocated)
return -1; return -1;
if (0 > pos || pos > args->argc) if (0 > pos || pos > args->argc)
return -1; return -1;
@ -448,14 +448,15 @@ FSP_FUSE_API int fsp_fuse_opt_insert_arg(struct fuse_args *args, int pos, const
} }
memcpy(argv[pos], arg, argsize); memcpy(argv[pos], arg, argsize);
memcpy(argv, args->argv, pos); memcpy(argv, args->argv, sizeof(char *) * pos);
memcpy(argv + pos + 1, args->argv + pos, args->argc - pos); memcpy(argv + pos + 1, args->argv + pos, sizeof(char *) * (args->argc - pos));
memfree(args->argv); memfree(args->argv);
args->argc++; args->argc++;
args->argv = argv; args->argv = argv;
argv[args->argc] = 0; argv[args->argc] = 0;
args->allocated = 1;
return 0; return 0;
} }