GUI.SelectionGrid crashes Unity

EDIT: There seems to be a bug with GUI.Selectiongrid, it does NOT work with a private GUIContent array

So I have this inventory script that I’ve been working on, and it works fine. I can pick up items and drop them almost without a problem.
However I’ve now run into this problem that unity crashes when i try to modify the array containing the GUIContent for the GUI.SelectionGrid.
And I believe I’ve found the error.

void ItemDelete(DeleteItem delit){ //Function for deleting an Item from the inventory
tempGui.CopyTo(Content,0); //If this is commented out it works
Content = tempGUI; //This doesnt work either
}
---
---
void OnGUI(){
if(ShowInventory){
SelectedItem = GUI.SelectionGrid(new Rect(100, 10,Screen.width-Screen.width/4,Screen.height-Screen.height/6),SelectedItem,Content,4);
 //If this line is commentet out I can modify the array Content without a problem (But then it doesn't draw the selectiongrid!)
}
}

When I try to modify the array Content by copying the content from tempGui (Or any other array), and as soon as I open up the inventory when this array is modified, Unity crashes! But it only crashes if the object which holds the script is not selected, if the script that holds this script is selected (Viewable in the inspector) it doesn’t crash.

TL;DL: Unity crashes when the GUIContent array of GUI.Selectiongrid is copied from another array

Sorry if this was hard to understand, but I’m starting to lose my patience.

Here is the whole code

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

[System.Serializable]
public class Item {
	public GameObject Prefab;
	public string ItemID;
	public Texture2D Thumbnail;
	public string Tooltip;
	public GUIContent content = new GUIContent();
}
[System.Serializable]
public class DeleteItem {
	public GameObject Prefab;
	public int count;
	public enum DropOrDelete{Delete,Drop}
	public DropOrDelete DelDrop = DropOrDelete.Delete;
	
}
public class InventoryScript : MonoBehaviour {
	//selected item
	static public GameObject ItemSelected;
	private GameObject tempObj;
	private bool UseButton = false;
	private bool SelectButton = false;
	static public bool IsOnUseTrigger = false;
	static public bool UsingItem = false;
	
	public List<Item> Inventory = new List<Item>();
	static public bool ShowInventory;
	private int SelectedItem;
	//public List<GUIContent> Content = new List<GUIContent>();
	public GUIContent[] Content = new GUIContent[16];
	static public int AvailableSpaceLeft = 16;
	
	int c = 0;
	// Use this for initialization
	void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
		if(Input.GetKeyDown(KeyCode.I)){
			ShowInventory = !ShowInventory;
			MouseLook.Locked = !MouseLook.Locked;
			FPSInputController.Locked = !FPSInputController.Locked;
		}
		if(ShowInventory){
			if(IsOnUseTrigger){
				PlayerScript.RaycastInformation = "";
				PlayerScript.ShowGUIBox = false;
				Time.timeScale = 0;
			}else{
				Time.timeScale = 0;
			}
		}else{
			Time.timeScale = 1;	
		}
	}
	
	void AddItem(Item DataInfo){
		print ("Adding Item");
		string item = DataInfo.ItemID;
		Texture2D image = DataInfo.Thumbnail;
		string tooltip = DataInfo.Tooltip;
		GameObject Prefab = DataInfo.Prefab;
		Item newItem = new Item();
		newItem.ItemID = item;
		newItem.Thumbnail = image;
		newItem.Tooltip = tooltip;
		newItem.Prefab = Prefab;
		newItem.content = new GUIContent(item,image);
		if(AvailableSpaceLeft > 0){
			Inventory.Add(newItem);
		}else if(AvailableSpaceLeft <= 0){
			print("Inventory Full");
		}
		//Add GUIContent to Content, place the correct stuff where it is empty
		for(int i = 0; i < Content.Length; i++){
			if(AvailableSpaceLeft > 0){
				if(Content[i].text == ""){ //If text is empty, add item
					Content[i].image = newItem.Thumbnail;
					Content[i].text = newItem.ItemID;
					Content[i].tooltip = newItem.Tooltip;
					AvailableSpaceLeft --;
					i = 15;
				}
			}else if(AvailableSpaceLeft <= 0){
				print("Inventory Full");
			}
		}
	}
	//Function for deleting or dropping items
	void ItemDelete(DeleteItem delit){ //Delete item
		
		switch(delit.DelDrop){
		case DeleteItem.DropOrDelete.Delete:
			print("DELETE THIS");
			break;
		case DeleteItem.DropOrDelete.Drop:
			print("Drop this");
			break;
		}
		int count = delit.count;
		int other = delit.count;
		for(int i = 0; i < Inventory.Count; i++){
			if(count > 0){
				if(Inventory[i].Prefab){
					if(Inventory[i].Prefab.name == delit.Prefab.name){
						Inventory.RemoveAt(i);
						ItemSelected = null;
						UseButton = false;
						SelectButton = false;
						count--;
					}
				}
			}
		}
		/*
		Content[SelectedItem].image = null;
		Content[SelectedItem].tooltip = "";
		Content[SelectedItem].text = "";
		*/
		//Deleting the GUIContent content
		for(int g = 0; g < Content.Length; g++){
			if(other > 0){
				if(Content[g].text == delit.Prefab.name){
					Content[g].image = null;
					Content[g].text = "";
					Content[g].tooltip = "";
					print("Deleted content");
					other --;
				}
			}
		}
		
		
		GUIContent[] tempGui = new GUIContent[16];
		for(int d = 0; d < Content.Length; d++){
			if(Content[d].text != ""){
				tempGui[c] = Content[d];
				print ("Did update gui content");
				c++;
			}
		}
		c = 0;
		tempGui.CopyTo(Content,0);
		print(Content);
		print("Deleted item");
	}
	void OnGUI(){
		if(ShowInventory){
			SelectedItem = GUI.SelectionGrid(new Rect(100, 10,Screen.width-Screen.width/4,Screen.height-Screen.height/6),SelectedItem,Content,4);
			if(Inventory.Count > 0){
				if(Inventory.Count > SelectedItem){
					if(Inventory[SelectedItem].ItemID != ""){
						//UseButton = false;
						SelectButton = true;
					}else if(Inventory[SelectedItem].ItemID == ""){
						UseButton = false;
						SelectButton = false;
					}
				}else{
					UseButton = false;
					SelectButton = false;	
				}
			}
			GUI.enabled = UseButton;
			if(GUI.Button(new Rect(100,500,90,30),"Use")){
				if(IsOnUseTrigger){
					UsingItem = true;
				}
				ShowInventory = !ShowInventory;
				MouseLook.Locked = !MouseLook.Locked;
				FPSInputController.Locked = !FPSInputController.Locked;
			}
			GUI.enabled = true;
			GUI.enabled = SelectButton;
			if(GUI.Button(new Rect(190,500,90,30),"Select")){
				ItemSelected = Inventory[SelectedItem].Prefab;
				UseButton = true;
			}
			GUI.enabled = true;
			GUI.enabled = UseButton;
			if(GUI.Button(new Rect(280,500,90,30),"Drop item")){
				DeleteItem delit = new DeleteItem();
				delit.count = 1;
				delit.Prefab = Inventory[SelectedItem].Prefab;
				delit.DelDrop = DeleteItem.DropOrDelete.Drop;
				ItemDelete(delit);
				ShowInventory = !ShowInventory;
				MouseLook.Locked = !MouseLook.Locked;
				FPSInputController.Locked = !FPSInputController.Locked;
			}
			GUI.enabled = true;
			if(GUI.Button(new Rect(370,500,90,30),"Back")){
				ShowInventory = !ShowInventory;
				MouseLook.Locked = !MouseLook.Locked;
				FPSInputController.Locked = !FPSInputController.Locked;
			}
		}
	}
}

Please help