@@ -803,7 +803,10 @@ ecpg_store_input(const int lineno, const bool force_indicator, const struct vari
803
803
804
804
mallocedval = quote_postgres (newcopy , quote , lineno );
805
805
if (!mallocedval )
806
+ {
807
+ ecpg_free (newcopy );
806
808
return false;
809
+ }
807
810
808
811
* tobeinserted_p = mallocedval ;
809
812
}
@@ -835,7 +838,10 @@ ecpg_store_input(const int lineno, const bool force_indicator, const struct vari
835
838
836
839
mallocedval = quote_postgres (newcopy , quote , lineno );
837
840
if (!mallocedval )
841
+ {
842
+ ecpg_free (newcopy );
838
843
return false;
844
+ }
839
845
840
846
* tobeinserted_p = mallocedval ;
841
847
}
@@ -859,7 +865,10 @@ ecpg_store_input(const int lineno, const bool force_indicator, const struct vari
859
865
860
866
nval = PGTYPESnumeric_new ();
861
867
if (!nval )
868
+ {
869
+ ecpg_free (mallocedval );
862
870
return false;
871
+ }
863
872
864
873
if (var -> type == ECPGt_numeric )
865
874
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
869
878
if (result != 0 )
870
879
{
871
880
PGTYPESnumeric_free (nval );
881
+ ecpg_free (mallocedval );
872
882
return false;
873
883
}
874
884
875
885
str = PGTYPESnumeric_to_asc (nval , nval -> dscale );
876
886
slen = strlen (str );
877
887
PGTYPESnumeric_free (nval );
878
888
879
- if (!(mallocedval = ecpg_realloc (mallocedval , strlen (mallocedval ) + slen + 2 , lineno )))
889
+ if (!(newcopy = ecpg_realloc (mallocedval , strlen (mallocedval ) + slen + 2 , lineno )))
880
890
{
891
+ ecpg_free (mallocedval );
881
892
ecpg_free (str );
882
893
return false;
883
894
}
895
+ mallocedval = newcopy ;
884
896
885
897
memcpy (mallocedval + strlen (mallocedval ), str , slen + 1 );
886
898
strcpy (mallocedval + strlen (mallocedval ), "," );
@@ -940,14 +952,19 @@ ecpg_store_input(const int lineno, const bool force_indicator, const struct vari
940
952
{
941
953
str = quote_postgres (PGTYPESinterval_to_asc ((interval * ) ((var + var -> offset * element )-> value )), quote , lineno );
942
954
if (!str )
955
+ {
956
+ ecpg_free (mallocedval );
943
957
return false;
958
+ }
944
959
slen = strlen (str );
945
960
946
- if (!(mallocedval = ecpg_realloc (mallocedval , strlen (mallocedval ) + slen + 2 , lineno )))
961
+ if (!(newcopy = ecpg_realloc (mallocedval , strlen (mallocedval ) + slen + 2 , lineno )))
947
962
{
963
+ ecpg_free (mallocedval );
948
964
ecpg_free (str );
949
965
return false;
950
966
}
967
+ mallocedval = newcopy ;
951
968
952
969
memcpy (mallocedval + strlen (mallocedval ), str , slen + 1 );
953
970
strcpy (mallocedval + strlen (mallocedval ), "," );
@@ -991,14 +1008,19 @@ ecpg_store_input(const int lineno, const bool force_indicator, const struct vari
991
1008
{
992
1009
str = quote_postgres (PGTYPESdate_to_asc (* (date * ) ((var + var -> offset * element )-> value )), quote , lineno );
993
1010
if (!str )
1011
+ {
1012
+ ecpg_free (mallocedval );
994
1013
return false;
1014
+ }
995
1015
slen = strlen (str );
996
1016
997
- if (!(mallocedval = ecpg_realloc (mallocedval , strlen (mallocedval ) + slen + 2 , lineno )))
1017
+ if (!(newcopy = ecpg_realloc (mallocedval , strlen (mallocedval ) + slen + 2 , lineno )))
998
1018
{
1019
+ ecpg_free (mallocedval );
999
1020
ecpg_free (str );
1000
1021
return false;
1001
1022
}
1023
+ mallocedval = newcopy ;
1002
1024
1003
1025
memcpy (mallocedval + strlen (mallocedval ), str , slen + 1 );
1004
1026
strcpy (mallocedval + strlen (mallocedval ), "," );
@@ -1049,11 +1071,13 @@ ecpg_store_input(const int lineno, const bool force_indicator, const struct vari
1049
1071
1050
1072
slen = strlen (str );
1051
1073
1052
- if (!(mallocedval = ecpg_realloc (mallocedval , strlen (mallocedval ) + slen + 2 , lineno )))
1074
+ if (!(newcopy = ecpg_realloc (mallocedval , strlen (mallocedval ) + slen + 2 , lineno )))
1053
1075
{
1076
+ ecpg_free (mallocedval );
1054
1077
ecpg_free (str );
1055
1078
return false;
1056
1079
}
1080
+ mallocedval = newcopy ;
1057
1081
1058
1082
memcpy (mallocedval + strlen (mallocedval ), str , slen + 1 );
1059
1083
strcpy (mallocedval + strlen (mallocedval ), "," );
0 commit comments