Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix Hashtable.CopyTo #23

Merged
merged 3 commits into from
Sep 12, 2018
Merged

Conversation

NemesisXB
Copy link
Contributor

@NemesisXB NemesisXB commented Sep 4, 2018

Description

Hashtable.CopyTo, Hashtable.Key.CopyTo and Hashtable.Value.CopyTo incorrectly used the index value as offset into the hashtable instead of the array to copy to. The index value was also incorrectly checked for out of range exception. The array length also was not checked.

Motivation and Context

How Has This Been Tested?

Using the below test code and STM32F429I-Discovery board, the below code was tested and showed the said problem. The code was changed and tested again, this time getting the expected outcome.

using System.Collections;

namespace NFApp1
{
	public class Program
	{
		public static void Main()
		{
			Hashtable theHashtable = new Hashtable();
			theHashtable.Add(2, 'n');
			theHashtable.Add(3, 'a');
			theHashtable.Add(5, 'n');
			theHashtable.Add(7, 'o');
			theHashtable.Add(11, 'F');
			theHashtable.Add(13, 'r');
			theHashtable.Add(17, 'a');
			theHashtable.Add(19, 'm');
			theHashtable.Add(23, 'e');
			theHashtable.Add(29, 'w');
			theHashtable.Add(31, 'o');
			theHashtable.Add(37, 'r');
			theHashtable.Add(41, 'k');

			object[] c = new object[15];
			theHashtable.CopyTo(c, 2);
		}
	}
}

Screenshots

The image below shows the output window on the modified code.
hastable_copyto

Types of changes

  • Improvement (non-breaking change that improves a feature, code or algorithm)
  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

  • My code follows the code style of this project.
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have read the CONTRIBUTING document.
  • I have added tests to cover my changes.
  • All new and existing tests passed.

Signed-off-by: NemesisXB 485436+NemesisXB@users.noreply.github.com

Fix hashtable.key.CopyTo
fix hastable.value.CopyTo

Signed-off-by: Tiaan Alberts <485436+NemesisXB@users.noreply.github.com>
@nfbot
Copy link
Member

nfbot commented Sep 4, 2018

Hi @NemesisXB,

I'm nanoFramework bot.
Thank you for your contribution!

A human will be reviewing it shortly. 😉

@CLAassistant
Copy link

CLAassistant commented Sep 4, 2018

CLA assistant check
All committers have signed the CLA.

Copy link
Member

@josesimoes josesimoes left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@josesimoes
Copy link
Member

Don't merge so we don't start a new version of core lib. Let's wait for other fixes that can be inbound.

@josesimoes josesimoes added the ⚠️ DO NOT MERGE ⚠️ This is not to be merged. In doubt check with the person that put the label. label Sep 4, 2018
@josesimoes josesimoes removed the ⚠️ DO NOT MERGE ⚠️ This is not to be merged. In doubt check with the person that put the label. label Sep 12, 2018
@josesimoes josesimoes merged commit de45317 into nanoframework:develop Sep 12, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

HashTable.CopyTo not working as expected
4 participants