Crash when changing function parameter

I have a C++ function that was defined something like this:

	UFUNCTION( BlueprintCallable, category = "Mikaboshi|Characters", Meta = ( ExpandEnumAsExecs = "Branches" ) )
		void GetEquipmentTypesForCharacter(
			int32		CharacterID,
			int32       &ClothingID,
			TEnumAsByte<FE_ITEM_FOUND_TYPE>	&Branches
			);

And this function was wired inside Blueprint. I then changed the function to look like this:

	UFUNCTION( BlueprintCallable, category = "Mikaboshi|Characters", Meta = ( ExpandEnumAsExecs = "Branches" ) )
		void GetEquipmentTypesForCharacter(
			int32		CharacterID,
			TArray< int32 > &ClothingID,
			TEnumAsByte<FE_ITEM_FOUND_TYPE>	&Branches
			);

When running my project there is no error message, nothing. When BP executes the node that calls the function in the old way it naturally crashes. I would expect that there would be an error coming up when I start the program. When going to the node in BP there is a yellow warning that the pins cant be connected, but the old connects are still there, they are not broken or anything and that is what causes the crash. I found this out by chance after a lengthy search. I would expect some help from the system there to point out the locations that need change instead of a crash with no hint of the location at all

Hello Wallenstein,

Can you provide a screenshot of what the blueprint looks like after making this code change? I’m getting an error shown when I change it while a getter for an int variable is plugged into &ClothingID due to it not matching up with the new array input. I did remove the TEnumAsByte input however, due to not having the Enum specified. Heres an example of what I see:

I found one of the errors in a piece of code that I dont use at the moment because I am working on replacing this. I found it just now by searching for the function name in BP. there is no warning whatsoever when I load or run this project.
The picture shows the situation after I changed the parameter from scalar to array without any other changes

Ah I see what you mean now. I’ll be happy to put in a feature request for you but first I want to be sure what kind of a solution you would like. Are you looking for a feature that allows you to look at a list of all of the warnings in your project or would you like this particular warning to show up as an error instead? I did notice that it does show up as an error when hot reloading and changes to a warning when the editor is closed/reopened.

Normally when there is a prohibitive problem in a BP you get the error dialog when you want to run the project telling you which BP and then when you go there, the Compile button shows the stop sign and the first error is presented.
I would say that kind of behavior should be there for this as well. of course the problem would have to be classified as an error instead of a warning, which it should be anyway in my eyes because executing this node leads to an immediate crash, so executing it should not be an option. Certainly not silently as it is now.
And I don’t do hot reloading because it mostly fails for me or doesn’t work otherwise, besides there is no real time advantage over restarting the project. But I guess that is another problem.

Thanks

Thank you for that clarification. I’ve placed a bug report in for the issue under the number UE-30254. I’ll be sure to let you know if there are any updates made to the report.

I did notice while testing that, in 4.10.4, the pin would automatically disconnect instead of giving any sort of error or warning so that might be where they go with the fix.

Have a nice day!

Well this is in 4.11.
Personally I dislike the solution where these invalid connections are removed silently. This will create runtime bugs of which the developer has no idea how to fix them because he doesn’t know that something was removed.
In my opinion this sort of “fix” should not be in the engine at all. Invalid nodes or connections should be pointed out to the developer in some way

I understand, I was only stating how it worked previously and wanted to clarify how it worked prior to this issue.