@@ -803,7 +803,10 @@ ecpg_store_input(const int lineno, const bool force_indicator, const struct vari
803803
804804 mallocedval = quote_postgres (newcopy , quote , lineno );
805805 if (!mallocedval )
806+ {
807+ ecpg_free (newcopy );
806808 return false;
809+ }
807810
808811 * tobeinserted_p = mallocedval ;
809812 }
@@ -835,7 +838,10 @@ ecpg_store_input(const int lineno, const bool force_indicator, const struct vari
835838
836839 mallocedval = quote_postgres (newcopy , quote , lineno );
837840 if (!mallocedval )
841+ {
842+ ecpg_free (newcopy );
838843 return false;
844+ }
839845
840846 * tobeinserted_p = mallocedval ;
841847 }
@@ -859,7 +865,10 @@ ecpg_store_input(const int lineno, const bool force_indicator, const struct vari
859865
860866 nval = PGTYPESnumeric_new ();
861867 if (!nval )
868+ {
869+ ecpg_free (mallocedval );
862870 return false;
871+ }
863872
864873 if (var -> type == ECPGt_numeric )
865874 result = PGTYPESnumeric_copy ((numeric * ) ((var + var -> offset * element )-> value ), nval );
@@ -869,18 +878,21 @@ ecpg_store_input(const int lineno, const bool force_indicator, const struct vari
869878 if (result != 0 )
870879 {
871880 PGTYPESnumeric_free (nval );
881+ ecpg_free (mallocedval );
872882 return false;
873883 }
874884
875885 str = PGTYPESnumeric_to_asc (nval , nval -> dscale );
876886 slen = strlen (str );
877887 PGTYPESnumeric_free (nval );
878888
879- if (!(mallocedval = ecpg_realloc (mallocedval , strlen (mallocedval ) + slen + 2 , lineno )))
889+ if (!(newcopy = ecpg_realloc (mallocedval , strlen (mallocedval ) + slen + 2 , lineno )))
880890 {
891+ ecpg_free (mallocedval );
881892 ecpg_free (str );
882893 return false;
883894 }
895+ mallocedval = newcopy ;
884896
885897 memcpy (mallocedval + strlen (mallocedval ), str , slen + 1 );
886898 strcpy (mallocedval + strlen (mallocedval ), "," );
@@ -940,14 +952,19 @@ ecpg_store_input(const int lineno, const bool force_indicator, const struct vari
940952 {
941953 str = quote_postgres (PGTYPESinterval_to_asc ((interval * ) ((var + var -> offset * element )-> value )), quote , lineno );
942954 if (!str )
955+ {
956+ ecpg_free (mallocedval );
943957 return false;
958+ }
944959 slen = strlen (str );
945960
946- if (!(mallocedval = ecpg_realloc (mallocedval , strlen (mallocedval ) + slen + 2 , lineno )))
961+ if (!(newcopy = ecpg_realloc (mallocedval , strlen (mallocedval ) + slen + 2 , lineno )))
947962 {
963+ ecpg_free (mallocedval );
948964 ecpg_free (str );
949965 return false;
950966 }
967+ mallocedval = newcopy ;
951968
952969 memcpy (mallocedval + strlen (mallocedval ), str , slen + 1 );
953970 strcpy (mallocedval + strlen (mallocedval ), "," );
@@ -991,14 +1008,19 @@ ecpg_store_input(const int lineno, const bool force_indicator, const struct vari
9911008 {
9921009 str = quote_postgres (PGTYPESdate_to_asc (* (date * ) ((var + var -> offset * element )-> value )), quote , lineno );
9931010 if (!str )
1011+ {
1012+ ecpg_free (mallocedval );
9941013 return false;
1014+ }
9951015 slen = strlen (str );
9961016
997- if (!(mallocedval = ecpg_realloc (mallocedval , strlen (mallocedval ) + slen + 2 , lineno )))
1017+ if (!(newcopy = ecpg_realloc (mallocedval , strlen (mallocedval ) + slen + 2 , lineno )))
9981018 {
1019+ ecpg_free (mallocedval );
9991020 ecpg_free (str );
10001021 return false;
10011022 }
1023+ mallocedval = newcopy ;
10021024
10031025 memcpy (mallocedval + strlen (mallocedval ), str , slen + 1 );
10041026 strcpy (mallocedval + strlen (mallocedval ), "," );
@@ -1049,11 +1071,13 @@ ecpg_store_input(const int lineno, const bool force_indicator, const struct vari
10491071
10501072 slen = strlen (str );
10511073
1052- if (!(mallocedval = ecpg_realloc (mallocedval , strlen (mallocedval ) + slen + 2 , lineno )))
1074+ if (!(newcopy = ecpg_realloc (mallocedval , strlen (mallocedval ) + slen + 2 , lineno )))
10531075 {
1076+ ecpg_free (mallocedval );
10541077 ecpg_free (str );
10551078 return false;
10561079 }
1080+ mallocedval = newcopy ;
10571081
10581082 memcpy (mallocedval + strlen (mallocedval ), str , slen + 1 );
10591083 strcpy (mallocedval + strlen (mallocedval ), "," );
0 commit comments