Index: ObjFW.xcodeproj/project.pbxproj
==================================================================
--- ObjFW.xcodeproj/project.pbxproj
+++ ObjFW.xcodeproj/project.pbxproj
@@ -243,11 +243,11 @@
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "rm -fr $TARGET_BUILD_DIR/ObjFW.framework\nmkdir -p $TARGET_BUILD_DIR/ObjFW.framework/Versions/A/Headers || exit 1\nmkdir -p $TARGET_BUILD_DIR/ObjFW.framework/Versions/A/Resources || exit 1\ninstall -m 755 src/ObjFW $TARGET_BUILD_DIR/ObjFW.framework/Versions/A/ || exit 1\ninstall -m 644 src/*.h $TARGET_BUILD_DIR/ObjFW.framework/Versions/A/Headers/ || exit 1\ncat >$TARGET_BUILD_DIR/ObjFW.framework/Versions/A/Resources/Info.plist <<__EOF__\n\n\n\n\n\tCFBundleDevelopmentRegion\n\tEnglish\n\tCFBundleExecutable\n\tObjFW\n\tCFBundleGetInfoString\n\thttps://webkeks.org/hg/objfw\n\tCFBundleIdentifier\n\tObjFW\n\tCFBundleInfoDictionaryVersion\n\t6.0\n\tCFBundleName\n\tobjfw\n\tCFBundlePackageType\n\tFMWK\n\tCFBundleShortVersionString\n\t0.1\n\tCFBundleSignature\n\tOBJF\n\tCFBundleVersion\n\t0.1\n\n\n__EOF__\nif [ ! -f \"$TARGET_BUILD_DIR/ObjFW.framework/Versions/A/Resources/Info.plist\" ]; then\n\texit 1;\nfi\nln -s A $TARGET_BUILD_DIR/ObjFW.framework/Versions/Current || exit 1\nln -s Versions/Current/Headers $TARGET_BUILD_DIR/ObjFW.framework/Headers || exit 1\nln -s Versions/Current/Resources $TARGET_BUILD_DIR/ObjFW.framework/Resources || exit 1\nln -s Versions/Current/ObjFW $TARGET_BUILD_DIR/ObjFW.framework/ObjFW || exit 1";
+ shellScript = "rm -fr $TARGET_BUILD_DIR/ObjFW.framework\nmkdir -p $TARGET_BUILD_DIR/ObjFW.framework/Versions/A/Headers || exit 1\nmkdir -p $TARGET_BUILD_DIR/ObjFW.framework/Versions/A/Resources || exit 1\ninstall -m 755 src/ObjFW $TARGET_BUILD_DIR/ObjFW.framework/Versions/A/ || exit 1\ninstall -m 644 src/*.h $TARGET_BUILD_DIR/ObjFW.framework/Versions/A/Headers/ || exit 1\ncat >$TARGET_BUILD_DIR/ObjFW.framework/Versions/A/Resources/Info.plist <<__EOF__\n\n\n\n\n\tCFBundleDevelopmentRegion\n\tEnglish\n\tCFBundleExecutable\n\tObjFW\n\tCFBundleGetInfoString\n\thttps://webkeks.org/objfw\n\tCFBundleIdentifier\n\tObjFW\n\tCFBundleInfoDictionaryVersion\n\t6.0\n\tCFBundleName\n\tobjfw\n\tCFBundlePackageType\n\tFMWK\n\tCFBundleShortVersionString\n\t0.1\n\tCFBundleSignature\n\tOBJF\n\tCFBundleVersion\n\t0.1\n\n\n__EOF__\nif [ ! -f \"$TARGET_BUILD_DIR/ObjFW.framework/Versions/A/Resources/Info.plist\" ]; then\n\texit 1;\nfi\nln -s A $TARGET_BUILD_DIR/ObjFW.framework/Versions/Current || exit 1\nln -s Versions/Current/Headers $TARGET_BUILD_DIR/ObjFW.framework/Headers || exit 1\nln -s Versions/Current/Resources $TARGET_BUILD_DIR/ObjFW.framework/Resources || exit 1\nln -s Versions/Current/ObjFW $TARGET_BUILD_DIR/ObjFW.framework/ObjFW || exit 1";
};
4B5D8DE11099E1BF000896FF /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
Index: src/OFMutableArray.m
==================================================================
--- src/OFMutableArray.m
+++ src/OFMutableArray.m
@@ -110,10 +110,22 @@
for (i = 0; i < count; i++) {
if ([objs[i] isEqual: obj]) {
OFObject *obj = objs[i];
[array removeItemAtIndex: i];
[obj release];
+
+ /*
+ * We need to get the C array again as it might have
+ * been relocated. We also need to adjust the count
+ * as otherwise we would have an out of bounds access.
+ * As another object will be at the current index now,
+ * we also need to handle the same index again, thus we
+ * decrease it.
+ */
+ objs = [array cArray];
+ count--;
+ i--;
}
}
return self;
}
@@ -125,10 +137,22 @@
for (i = 0; i < count; i++) {
if (objs[i] == obj) {
[array removeItemAtIndex: i];
[obj release];
+
+ /*
+ * We need to get the C array again as it might have
+ * been relocated. We also need to adjust the count
+ * as otherwise we would have an out of bounds access.
+ * As another object will be at the current index now,
+ * we also need to handle the same index again, thus we
+ * decrease it.
+ */
+ objs = [array cArray];
+ count--;
+ i--;
}
}
return self;
}