@@ -898,18 +898,16 @@ SCIP_RETCODE consdataCreate(
898
898
constant = 0.0;
899
899
if( nvars > 0 )
900
900
{
901
- int k;
902
-
903
901
SCIP_VAR** varsbuffer;
904
902
SCIP_Real* valsbuffer;
905
903
906
904
/* copy variables into temporary buffer */
907
905
SCIP_CALL( SCIPallocBufferArray(scip, &varsbuffer, nvars) );
908
906
SCIP_CALL( SCIPallocBufferArray(scip, &valsbuffer, nvars) );
909
- k = 0;
907
+ nvars = 0;
910
908
911
909
/* loop over variables and sort out fixed ones */
912
- for( v = 0; v < nvars; ++v )
910
+ for( v = 0; v < (*consdata)-> nvars; ++v )
913
911
{
914
912
SCIP_VAR* var;
915
913
SCIP_Real val;
@@ -927,9 +925,9 @@ SCIP_RETCODE consdataCreate(
927
925
}
928
926
else
929
927
{
930
- varsbuffer[k ] = var;
931
- valsbuffer[k ] = val;
932
- k++ ;
928
+ varsbuffer[nvars ] = var;
929
+ valsbuffer[nvars ] = val;
930
+ ++nvars ;
933
931
934
932
/* update hascontvar and hasnonbinvar flags */
935
933
if( !(*consdata)->hascontvar )
@@ -947,14 +945,14 @@ SCIP_RETCODE consdataCreate(
947
945
}
948
946
}
949
947
}
950
- (*consdata)->nvars = k ;
948
+ (*consdata)->nvars = nvars ;
951
949
952
- if( k > 0 )
950
+ if( nvars > 0 )
953
951
{
954
952
/* copy the possibly reduced buffer arrays into block */
955
- SCIP_CALL( SCIPduplicateBlockMemoryArray(scip, &(*consdata)->vars, varsbuffer, k ) );
956
- SCIP_CALL( SCIPduplicateBlockMemoryArray(scip, &(*consdata)->vals, valsbuffer, k ) );
957
- (*consdata)->varssize = k ;
953
+ SCIP_CALL( SCIPduplicateBlockMemoryArray(scip, &(*consdata)->vars, varsbuffer, nvars ) );
954
+ SCIP_CALL( SCIPduplicateBlockMemoryArray(scip, &(*consdata)->vals, valsbuffer, nvars ) );
955
+ (*consdata)->varssize = nvars ;
958
956
}
959
957
/* free temporary buffer */
960
958
SCIPfreeBufferArray(scip, &valsbuffer);
@@ -3946,7 +3944,8 @@ SCIP_RETCODE chgCoefPos(
3946
3944
locked = SCIPconsIsLockedType(cons, (SCIP_LOCKTYPE) i);
3947
3945
3948
3946
/* if necessary, update the rounding locks of the variable */
3949
- if( locked && newval * val < 0.0 )
3947
+ if( locked && ( !SCIPisNegative(scip, val) || !SCIPisNegative(scip, newval) )
3948
+ && ( !SCIPisPositive(scip, val) || !SCIPisPositive(scip, newval) ) )
3950
3949
{
3951
3950
assert(SCIPconsIsTransformed(cons));
3952
3951
@@ -14773,7 +14772,9 @@ SCIP_RETCODE fullDualPresolve(
14773
14772
int arrayindex;
14774
14773
14775
14774
var = consdata->vars[i];
14775
+ assert(var != NULL);
14776
14776
val = consdata->vals[i];
14777
+ assert(!SCIPisZero(scip, val));
14777
14778
14778
14779
/* check if still all integer variables have integral coefficients */
14779
14780
if( SCIPvarIsIntegral(var) )
0 commit comments