Diff
Not logged in

Differences From Artifact [766a5e6d67]:

To Artifact [f9b2c9493f]:


3233
3234
3235
3236
3237
3238
3239

3240

3241
3242
3243
3244
3245
3246
3247
3248
3249

3250
3251
3252

3253
3254
3255

3256
3257
3258
3259
3260
3261
3262
3233
3234
3235
3236
3237
3238
3239
3240

3241
3242
3243
3244
3245
3246
3247
3248
3249

3250
3251
3252

3253
3254
3255

3256
3257
3258
3259
3260
3261
3262
3263







+
-
+








-
+


-
+


-
+







    /*
     * The platform supports loading a dynamic shared object from memory.
     * Create a sufficiently large buffer, read the file into it, and then load
     * the dynamic shared object from the buffer:
     */

    {
	Tcl_Size ret;
	int ret, size;
	size_t size;
	void *buffer;
	Tcl_StatBuf statBuf;
	Tcl_Channel data;

	ret = Tcl_FSStat(pathPtr, &statBuf);
	if (ret < 0) {
	    goto mustCopyToTempAnyway;
	}
	size = (int) statBuf.st_size;
	size = statBuf.st_size;

	/*
	 * Tcl_Read takes an int:  Determine whether the file size is wide.
	 * Tcl_Read takes an int:  Determine whether the file size <= INT_MAX
	 */

	if (size != (Tcl_WideInt) statBuf.st_size) {
	if (size > INT_MAX) {
	    goto mustCopyToTempAnyway;
	}
	data = Tcl_FSOpenFileChannel(interp, pathPtr, "rb", 0666);
	if (!data) {
	    goto mustCopyToTempAnyway;
	}
	buffer = TclpLoadMemoryGetBuffer(interp, size);